1. throwঅপারেটর

যখন একটি ব্যতিক্রম একটি catchব্লক দ্বারা ধরা হয়, এবং এটি জাভা মেশিনে নিক্ষিপ্ত না হওয়া পর্যন্ত, এটি শুধুমাত্র একটি বস্তু যা উত্তরাধিকারসূত্রে পাওয়া যায় Exception(বা বরং, Throwable)। ব্যতিক্রম বস্তুর নিজেই কোন জাদুকরী বৈশিষ্ট্য নেই।

ব্যতিক্রমগুলি কীভাবে কাজ করে তার সমস্ত যুক্তি হল জাভা মেশিনের আচরণের একটি বিশেষ উপায় যখন একটি ব্যতিক্রম এটিকে নিক্ষেপ করা হয়।

আপনি সবসময় জাভা মেশিনে একটি ধরা ব্যতিক্রম পুনরায় থ্রো করতে পারেন। এটি করার জন্য, আপনাকে অপারেটর ব্যবহার করতে হবে throw:

throw exception;

উদাহরণ:

কোড কনসোল আউটপুট
try
{
   int d = 2/0;
}
catch(Exception except)
{
   System.out.println("Caught the exception");
   throw except;
}
Caught the exception

এই কোডটিতে, আমরা একটি ব্যতিক্রম ধরা পড়েছি, এটি সম্পর্কে একটি বার্তা স্ক্রিনে প্রদর্শন করেছি এবং তারপরে এটি পুনরুদ্ধার করেছি।

catchএকই tryব্লকের অন্যান্য ব্লকের দ্বারা একটি পুনঃনিক্ষেপ করা ব্যতিক্রম ধরা যাবে না ।


2. আপনার ব্যতিক্রম

যাইহোক, আপনি নিজেই একটি ব্যতিক্রম বস্তু তৈরি করতে পারেন: এটি শুধুমাত্র একটি বস্তু যার ধরন Exceptionবা একটি শ্রেণী যা এটিকে উত্তরাধিকার সূত্রে প্রাপ্ত। এবং এটি নিক্ষেপ.

এটি শোনার চেয়ে সহজ। উদাহরণ:

কোড কনসোল আউটপুট
try
{
   throw new RuntimeException();
}
catch(Exception except)
{
   System.out.println("Caught the exception");
   throw except;
}
Caught the exception

উপরের উদাহরণে, আমরা একটি নতুন ব্যতিক্রম বস্তু তৈরি করেছি যার টাইপ RuntimeExceptionএবং অবিলম্বে throwঅপারেটর ব্যবহার করে এটি নিক্ষেপ করেছি।

এটি অবিলম্বে ব্লক দ্বারা ধরা হবে catch, যেহেতু RuntimeException উত্তরাধিকারসূত্রে পেয়েছে Exception। কোডটি catch (Exception except)ক্লাসের উত্তরাধিকারী সমস্ত ক্লাসের ব্যতিক্রম অবজেক্ট ক্যাচ করে Exception



3. finallyকীওয়ার্ড

আরেকটি গুরুত্বপূর্ণ পয়েন্ট। কখনও কখনও একজন প্রোগ্রামারকে কোডে একটি ব্যতিক্রম ঘটেছে কিনা তা নির্বিশেষে কিছু ক্রিয়া সম্পাদন করতে হবে। উদাহরণস্বরূপ, ধরুন আমরা লেখার জন্য একটি ফাইল খুললাম। খোলা ফাইলটি কল করে বন্ধ করতে হবে close()

try
{
   // Code where an exception might occur
}
catch(ExceptionType name)
{
   // Exception handling code
}
finally
{
   // Code that must executed no matter what happens
}

এই বাধ্যতামূলক ক্রিয়াগুলি সম্পাদন করার জন্য, নির্মাণে অন্য ধরণের ব্লক ( finally) যুক্ত করা হয়েছিল try-catch, যার ফলে try-catch-finallyগঠন তৈরি করা হয়েছিল। এটি এই মত দেখায়:

উদাহরণ:

FileInputStream source = null;
try
{
   source = new FileInputStream("c:\\note.txt");
   source.read();
}
catch(Exception except)
{
   System.out.println("Caught the exception");
   throw except;
}
finally
{
   if (source != null)
      source.close();
}

finallyব্লকের কোডটি যে কোনও ক্ষেত্রেই কার্যকর হবে, কোনও ব্যতিক্রম ছিল কিনা তা নির্বিশেষে। এমনকি যদি একটি ব্যতিক্রম নিক্ষেপ করা হয় এবং ধরা না পড়ে তবে finallyব্লকটি কার্যকর হবে।

যাইহোক, আপনি যদি একটি ব্যতিক্রম ধরতে না চান, কিন্তু আপনার একটি finallyব্লকের প্রয়োজন হয়, তাহলে নির্মাণের জন্য শর্টহ্যান্ড স্বরলিপি ব্যবহার করুন try-catch-finally: একটি try-finallyব্লক। এটা এই মত কিছু দেখায়:

try
{
   // Code where an exception might occur
}
finally
{
   // Code that must executed no matter what happens
}