"হাই, অ্যামিগো!"

"হাই, এলি! জীবন কেমন চলছে?"

"চমৎকার, ধন্যবাদ। কেমন আছেন?"

"দারুণ, আজ সকালে আমাকে অনেক নতুন জিনিস ব্যাখ্যা করা হয়েছে।"

"আচ্ছা, খুব ভালো। তুমি ক্লান্ত না?"

"হ্যাঁ, ওটা আছে। আমি একটু ক্লান্ত।"

"তাহলে আপনি ভাগ্যবান হয়েছেন। আমি আজ একটি বড়, জটিল বিষয় কভার করতে চেয়েছিলাম, কিন্তু শেষ মুহূর্তে আমি আমার মন পরিবর্তন করেছি এবং একটি ছোট, সহজ বিষয় কভার করার সিদ্ধান্ত নিয়েছি।"

"ছোট এবং সহজ? আমি প্রস্তুত।"

"আজ আমরা বিস্তারিতভাবে ব্যতিক্রম বিষয় পরীক্ষা করব ।"

"আপনি কি ত্রুটি পরিচালনার কথা বলছেন?"

"আপনি ব্যতিক্রমগুলিকে ত্রুটি হিসাবে ভাববেন না। ব্যতিক্রমগুলি 'অপ্রত্যাশিত কিছু ঘটেছে' এমন প্রতিবেদনের মতো। এই প্রতিবেদনগুলির উপর ভিত্তি করে, আপনি বিকল্প পদক্ষেপের প্রস্তাব করতে পারেন।"

"এটি সমস্ত পদ্ধতি সম্পর্কে।  আপনি যখন একটি পদ্ধতিকে কল করেন, তখন এটি যা করতে বলা হয়েছিল তা করার প্রতিশ্রুতি দেয়। "

"যখন একটি পদ্ধতি, যে কারণেই হোক না কেন, যা করতে বলা হয়েছিল তা করতে পারে না, এটি কলকারীকে জানাতে হবে।"

"অন্য কথায়, সবচেয়ে খারাপ জিনিস যা ঘটতে পারে একটি পদ্ধতির জন্য তার কাজ না করা এবং এটি সম্পর্কে কাউকে না বলা। সম্ভবত এর চেয়ে খারাপ আর কিছুই হতে পারে না। যখন এটি ঘটে তখন আপনি পরিস্থিতির নিয়ন্ত্রণ হারাবেন। "

"যখন আপনি একজন নতুন প্রোগ্রামার হন, তখন মনে হয় আপনি কেবল পদ্ধতিগুলিকে কল করেন এবং আপনি তাদের যা করতে বলেছেন তা তারা নিশ্চিত করে।"

"যখন আপনি একজন অভিজ্ঞ প্রোগ্রামার হন, আপনি জানেন যে এমন কয়েক ডজন কারণ থাকতে পারে যা একটি পদ্ধতির কাজ করার ক্ষমতাকে প্রভাবিত করে, এবং এমন অনেকগুলি ঘটনা রয়েছে যা একটি পদ্ধতিকে তার কাজটি সম্পূর্ণ করতে বাধা দিতে পারে।"

"প্রোগ্রামারের দৃষ্টিকোণ থেকে, যদি প্রোগ্রামটি একটি ত্রুটির সম্মুখীন হয় এবং তারপর ব্যবহারকারী কি ঘটেছে তা বুঝতে না পেরে (ভুলভাবে) কাজ চালিয়ে যাওয়ার চেয়ে যদি একটি প্রোগ্রাম একটি ত্রুটির সম্মুখীন হয় তখন এটি বন্ধ হয়ে যায় তাহলে এটি হাজার গুণ ভালো।"

"তাহলে প্রোগ্রামটি বন্ধ হয়ে গেলে এবং সমস্ত ডেটা হারিয়ে গেলে কিছু ভুল দেখানোর চেয়ে খারাপ হতে পারে?"

"কী কারণে আপনি ভাবছেন যে প্রোগ্রামটি কেবল কিছু ভুল দেখাচ্ছে? হয়তো প্রোগ্রামগুলিতে প্রচুর বাগ রয়েছে এবং আপনার সমস্ত ডেটা অপ্রত্যাশিতভাবে হারিয়ে যাবে? ধরুন আপনি 3 ঘন্টার জন্য টেক্সট টাইপ করেছেন, কিন্তু এর একটিও সংরক্ষণ করা হবে না কারণ একটি মাত্র দুই মিনিট পরে যে ত্রুটি ঘটেছে।"

"যখন একজন নবীন প্রোগ্রামার ব্যতিক্রমের মুখোমুখি হন, তখন তিনি হতাশ হন।"

"কিন্তু বাস্তবে, ব্যতিক্রমগুলি সমস্ত সম্ভাব্য পরিস্থিতি প্রকাশ করে যা তার পূর্বাভাস দেওয়া উচিত ছিল কিন্তু হয়নি।"

"আপনি ব্যতিক্রমগুলি পরিচালনা না করা বেছে নিতে পারেন এবং এটি আপনাকে একটি খারাপ প্রোগ্রামার করে তুলবে৷ কিন্তু যদি আপনার পদ্ধতিগুলি ব্যতিক্রমগুলি না ফেলে, তবে আপনি মোটেই প্রোগ্রামার নন - কারণ আপনি এই সহজ সত্যটি বুঝতে ব্যর্থ হয়েছেন:"

"একটি পদ্ধতি হয় যা করতে লেখা হয়েছিল তা করে, অথবা এটি একটি ব্যতিক্রম নিক্ষেপ করে। তৃতীয় কোন বিকল্প নেই!"

"ঠিক আছে, আমি আপনাকে বিশ্বাস করি। আমি ব্যতিক্রম ব্যবহার করার প্রতিশ্রুতি দিচ্ছি।"

"দারুণ। তাহলে আমি আপনাকে ব্যতিক্রমের শ্রেণিবিন্যাস সম্পর্কে বলি:"

ব্যতিক্রম শ্রেণিবিন্যাস, ত্রুটি - 1

"ব্যতিক্রম অনুক্রম চারটি শ্রেণীর উপর ভিত্তি করে।"

"সর্বনিম্ন বেস ক্লাস হল নিক্ষেপযোগ্য ।"

" ত্রুটি এবং ব্যতিক্রম ক্লাস এটি উত্তরাধিকারসূত্রে পায়।"

" RuntimeException উত্তরাধিকারসূত্রে ব্যতিক্রম ।"

" ত্রুটির শ্রেণী হল JVM ত্রুটির জন্য বেস ক্লাস যেমন StackOverFlow , OutOfMemory , …"

"একটি প্রোগ্রাম সাধারণত এই ধরনের ত্রুটিগুলি থেকে পুনরুদ্ধার করতে পারে না, যা এটিকে বন্ধ করে দেয়।"

"প্রকৃতপক্ষে, প্রোগ্রামটি স্বাভাবিকভাবে চালানোর জন্য পর্যাপ্ত মেমরি না থাকলে বা স্ট্যাক ওভারফ্লো থাকলে কী করা যেতে পারে?"

" ব্যতিক্রম হল একটি প্রোগ্রাম দ্বারা নিক্ষিপ্ত সমস্ত সাধারণ ব্যতিক্রমগুলির জন্য বেস ক্লাস৷  RuntimeException হল একটি বিশেষ ধরণের ব্যতিক্রম যার সামান্য ভিন্ন নিয়ম রয়েছে৷"

"তারা কি?"

"এটাই আমি এখন ব্যাখ্যা করতে যাচ্ছি।"

"আপনি সম্ভবত মনে রাখবেন, ব্যতিক্রমগুলি দুটি বিভাগে পড়ে: চেক করা এবং আনচেক করা ।"

"যদি একটি পদ্ধতি চেক করা ব্যতিক্রমগুলি থ্রো করে, তাহলে যে পদ্ধতিটি এটিকে কল করবে তাকে অবশ্যই একটি ট্রাই-ক্যাচ ব্লকে কলটি মুড়ে দিতে হবে। ভাল, হয় সেটি বা পদ্ধতির স্বাক্ষরে থ্রোগুলিকে স্পষ্টভাবে নির্দেশ করে ব্যতিক্রমটিকে পুনরায় থ্রো করুন। "

"এই নিয়ম/বিধিনিষেধগুলি অচেক করা ব্যতিক্রমগুলিতে প্রযোজ্য নয়।"

"সুতরাং, ব্যতিক্রমের উত্তরাধিকারী সমস্ত ব্যতিক্রমগুলিকে পরীক্ষিত হিসাবে বিবেচনা করা হয়৷ RuntimeException উত্তরাধিকারসূত্রে পাওয়া ব্যতিক্রমগুলি ব্যতীত, যেগুলিকে আনচেক করা হয়৷"

"আহ-হহ। আমার মনে আছে তুমি আমাকে আগে এরকম কিছু বলেছিলে।"

"অ্যামিগো! তারা প্রত্যেক সাক্ষাত্কারে ব্যতিক্রম শ্রেণিবিন্যাস সম্পর্কে জিজ্ঞাসা করে । আমি আবারও বলব - প্রতিটি সাক্ষাত্কারে । আপনাকে এই বিষয়টি পুরোপুরি জানতে হবে।"

"ঠিক আছে। আমি আবার সবকিছু পড়ে বের করব। আমাকে সাহায্য করার জন্য ধন্যবাদ, এলি।"