কোনও তত্ত্ব আছে কিনা তা আমি জানি না, তবে একটি উদীয়মান বাস্তববাদী পরীক্ষামূলক বিজ্ঞান থাকতে পারে।
আমি যে উত্সটি সবচেয়ে ভালভাবে ভাবতে পারি তা হ'ল বজার্ন স্ট্রস্ট্রপ, সি ++ এর ডিজাইন এবং বিবর্তন, অ্যাডিসন-ওয়েসলি, 1994 । যদি আমি সঠিকভাবে মনে রাখি (এটি একটি খুব ভাল বই এবং লোকেরা এটি আমার কাছ থেকে ধার করে তা ফেরত দেয় না, তাই এই মুহুর্তে আমার একটি অনুলিপি নেই) ব্যতিক্রম সম্পর্কে একটি অধ্যায় রয়েছে। স্ট্রোস্ট্রপের অধীনে সি ++ কমিটির প্রচুর অভিজ্ঞতামূলক প্রমাণের প্রয়োজন ছিল যে তারা ভাষার সংজ্ঞাতে এটি যুক্ত করতে ইচ্ছুক হওয়ার আগে প্রস্তাবিত বৈশিষ্ট্যটি প্রয়োজনীয় ছিল। ব্যতিক্রম সম্পর্কে উইকিপিডিয়া পৃষ্ঠা বই থেকে নিম্নোক্ত উদ্ধৃতি আছে:
1991 সালের নভেম্বরে পালো অল্টো [সি ++ মানীকরণ] সভায় আমরা জিম মিচেল (সান থেকে, পূর্বে জেরক্স পার্কের) থেকে ব্যক্তিগত অভিজ্ঞতা এবং ডেটা উভয়ই সমেত সমাপ্তি শব্দার্থবিজ্ঞানের যুক্তিগুলির একটি উজ্জ্বল সংক্ষিপ্ত বিবরণ শুনলাম। জিম 20 বছরের সময়কালে অর্ধ ডজন ভাষায় ব্যতিক্রম হ্যান্ডলিং ব্যবহার করেছিলেন এবং জেরক্সের সিডার / মেসা সিস্টেমের অন্যতম প্রধান ডিজাইনার এবং প্রয়োগকারী হিসাবে পুনরায় শুরুকরণ শব্দার্থবিদ্যার প্রবক্তা ছিলেন। তার বার্তা পুনরায় শুরু করার চেয়ে সমাপ্তি পছন্দ; এটি মতামতের বিষয় নয়, বছরের অভিজ্ঞতার বিষয়। পুনরায় শুরু করা প্রলোভনসঙ্কুল, তবে বৈধ নয়। তিনি এই বিবৃতিটিকে বেশ কয়েকটি অপারেটিং সিস্টেমের অভিজ্ঞতা দিয়ে সমর্থন করেছিলেন। মূল উদাহরণটি সিডার / মেসা ছিল: এটি এমন লোকেরা লিখেছিল যারা পুনরায় সংস্থান পছন্দ করেছিল এবং ব্যবহার করেছিল তবে দশ বছর ব্যবহারের পরে, অর্ধ মিলিয়ন লাইন সিস্টেমে পুনরায় শুরু করার কেবলমাত্র একটি ব্যবহার বাকি ছিল - এবং এটি একটি প্রসঙ্গ অনুসন্ধান ছিল। যেহেতু এ জাতীয় প্রসঙ্গত তদন্তের জন্য পুনরায় শুরু করা আসলে প্রয়োজনীয় ছিল না, তারা এটিকে সরিয়ে নিয়েছে এবং সিস্টেমের সেই অংশে একটি উল্লেখযোগ্য গতি বৃদ্ধি পেয়েছে। দশ বছরে - পুনরায় শুরু হওয়া প্রতিটি ক্ষেত্রেই এটি একটি সমস্যা হয়ে দাঁড়িয়েছিল এবং আরও উপযুক্ত নকশা এটি প্রতিস্থাপন করেছিল। মূলত, পুনরায় শুরু করার প্রতিটি ব্যবহার বিমূর্ত বিভেদ পৃথক স্তরের রাখতে ব্যর্থতার প্রতিনিধিত্ব করেছিল। দশ বছরে - পুনরায় শুরু হওয়া প্রতিটি ক্ষেত্রেই এটি একটি সমস্যা হয়ে দাঁড়িয়েছিল এবং আরও উপযুক্ত নকশা এটি প্রতিস্থাপন করেছিল। মূলত, পুনরায় শুরু করার প্রতিটি ব্যবহার বিমূর্ত বিভেদ পৃথক স্তরের রাখতে ব্যর্থতার প্রতিনিধিত্ব করেছিল। দশ বছরে - পুনরায় শুরু হওয়া প্রতিটি ক্ষেত্রেই এটি একটি সমস্যা হয়ে দাঁড়িয়েছিল এবং আরও উপযুক্ত নকশা এটি প্রতিস্থাপন করেছিল। মূলত, পুনরায় শুরু করার প্রতিটি ব্যবহার বিমূর্ত বিভেদ পৃথক স্তরের রাখতে ব্যর্থতার প্রতিনিধিত্ব করেছিল।
সি ++ এ আসল জয়টি হ'ল আরআইআই , যা ত্রুটির সময় রিসোর্স ডিএলোকেশন পরিচালনা করতে খুব সহজ করে তোলে। (এটি প্রয়োজনীয় এবং throw
এবং try
- এর সাথে সামঞ্জস্য করে না catch
তবে এর অর্থ আপনার প্রয়োজন নেই finally
))
আমি মনে করি যে জিনিসটি যাঁরা তাদের বোঝায় যে তারা ব্যতিক্রমগুলি জেনেরিক পাত্রে রয়েছে: কনটেইনার লেখক যে ধরণের ত্রুটিগুলি থাকতে পারে সেগুলি সম্পর্কে কিছু জানেন না (সেগুলি হ্যান্ডেল করার পদ্ধতিটি খুব কম) তবে এই কোডগুলিতে এই বিষয়গুলি sertedোকানো ছিল এমন কোড ধারকের অবশ্যই সেই জিনিসগুলির ইন্টারফেস কী তা সম্পর্কে কিছুটা জানতে হবে। তবে যেহেতু অন্তর্ভুক্ত বস্তুগুলি কী ধরণের ত্রুটি ফেলতে পারে সে সম্পর্কে আমরা কিছুই জানি না, তাই আমরা ব্যতিক্রম প্রকারগুলিকে মানক করতে পারি না। (বিপরীতমুখী: আমরা যদি ব্যতিক্রম প্রকারগুলিকে মানিক করে তুলতে পারি তবে আমাদের ব্যতিক্রমের প্রয়োজন হবে না))
লোকেরা যে বিষয়টি বছরের পর বছর ধরে শিখেছে বলে মনে হচ্ছে তা হ'ল ব্যতিক্রমের নির্দিষ্টকরণগুলি কোনও ভাষায় সঠিকভাবে toোকানো শক্ত। উদাহরণস্বরূপ এটি দেখুন: http://www.gotw.ca/publications/mill22.htm , বা এটি: http://www.gotw.ca/gotw/082.htm । (এবং এটি কেবল সি ++ নয়, জাভা প্রোগ্রামারদের চেক বনাম চেক করা ব্যতিক্রমগুলির সাথে তাদের অভিজ্ঞতা সম্পর্কে দীর্ঘ যুক্তি রয়েছে ))
ব্যাতিক্রমের ইতিহাস সম্পর্কে একটু। ক্লাসিক পেপারটি হ'ল: জন বি গুডেনো: "ব্যতিক্রম হ্যান্ডলিং: ইস্যু এবং প্রস্তাবিত স্বরলিপি," যোগাযোগ । এসিএম 18 (12): 683-696, 1975. তবে ব্যতিক্রমগুলি তার আগে জানা ছিল। মেসার এগুলি 1974 সালে ছিল এবং পিএল / আমি তাদেরও পেয়েছিলাম। ১৯ 1980০ সালের আগে আদার একটি ব্যতিক্রমী ব্যবস্থা ছিল। আমি বিশ্বাস করি যে সি ++ এর ব্যতিক্রমগুলি প্রায় 1976 সাল থেকে বার্বারা লিসকভের সিএলইউ প্রোগ্রামিং ভাষার সাথে অভিজ্ঞতার দ্বারা প্রভাবিত হয়েছিল। বার্বারা লিসকভ: প্রোগ্রামিং ভাষার ইতিহাসে "সিএলইউর ইতিহাস " --- II , টমাস জে বার্গিন, জুনিয়র এবং রিচার্ড জি। গিবসন, জুনিয়র (অ্যাড।)। পৃষ্ঠা 471-510, এসিএম, 1996 ।