ব্যতিক্রম প্রকার

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

"আপনি কি ইচ্ছাকৃতভাবে আপনার কোডে ব্যতিক্রম নিক্ষেপ করতে পারেন?"

"আপনি আপনার নিজের কোডে যেকোনো ব্যতিক্রম ছুঁড়ে দিতে পারেন। এমনকি আপনি নিজের ব্যতিক্রমও লিখতে পারেন। কিন্তু আমরা সে বিষয়ে পরে কথা বলব। এই মুহূর্তে, জাভা মেশিনের দ্বারা নিক্ষিপ্ত ব্যতিক্রমগুলিতে মনোনিবেশ করা যাক।"

"ঠিক আছে."

"যদি ClassNotFoundException বা FileNotFoundException একটি পদ্ধতিতে নিক্ষিপ্ত (ঘটতে) হয়, তবে বিকাশকারীকে অবশ্যই পদ্ধতি ঘোষণায় সেগুলি নির্দেশ করতে হবে। এগুলি চেক করা ব্যতিক্রম। এটি সাধারণত এভাবে দেখায়:"

চেক করা ব্যতিক্রমের উদাহরণ
public static void method1() throws ClassNotFoundException, FileNotFoundException
public static void main() throws IOException
public static void main() // Doesn't throw any exceptions

"সুতরাং আমরা শুধু 'থ্রো' লিখি তার পরে ব্যতিক্রমগুলির একটি কমা-বিন্যস্ত তালিকা, তাই না?"

"হ্যাঁ। তবে আরও কিছু আছে। প্রোগ্রামটি কম্পাইল করার জন্য, method1নীচের উদাহরণে যে পদ্ধতিটি কল করা হয়েছে তাকে অবশ্যই দুটি জিনিসের মধ্যে একটি করতে হবে: হয় এই ব্যতিক্রমগুলি ধরুন বা সেগুলিকে (কলারের কাছে) পুনঃ থ্রো করুন , এটির ঘোষণায় পুনরায় নিক্ষেপ করা ব্যতিক্রমগুলি নির্দেশ করে। "

"আবার। যদি আপনার প্রধান পদ্ধতিতে এমন একটি পদ্ধতি কল করতে হয় যার ঘোষণায় ' থ্রোস ফাইলনটফাউন্ডএক্সেপশন , …' থাকে, তাহলে আপনাকে দুটি জিনিসের মধ্যে একটি করতে হবে:

1) FileNotFoundException ধরুন , …

আপনাকে অবশ্যই একটি ট্রাই-ক্যাচ ব্লকে অনিরাপদ পদ্ধতিতে কল করার কোডটি আবৃত করতে হবে ।

2) FileNotFoundException ধরবেন না , …

আপনাকে অবশ্যই আপনার প্রধান পদ্ধতির নিক্ষেপ তালিকায় এই ব্যতিক্রমগুলি যোগ করতে হবে ।"

"আপনি আমাকে একটি উদাহরণ দিতে পারেন?"

"এক নজর দেখে নাও:"

চেক করা ব্যতিক্রমের উদাহরণ
public static void main(String[] args)
{
    method1();
}

public static void method1() throws FileNotFoundException, ClassNotFoundException
{
    //Throws FileNotFoundException if the file doesn't exist
    FileInputStream fis = new FileInputStream("C2:\badFileName.txt");
}

"এই উদাহরণের কোডটি কম্পাইল করা হবে না, কারণ প্রধান পদ্ধতিটি মেথড1() কে কল করে , যা ব্যতিক্রমগুলিকে ছুঁড়ে দেয় যা ধরতে হবে।"

"এটি কম্পাইল করতে, আমাদের মূল পদ্ধতিতে ব্যতিক্রম হ্যান্ডলিং যোগ করতে হবে। আপনি এটি দুটি উপায়ের একটিতে করতে পারেন:"

বিকল্প 1: আমরা কেবল ব্যতিক্রমটি পুনরায় ফেলে দিই (কলারকে):
public static void main(String[] args)  throws FileNotFoundException, ClassNotFoundException
{
    method1();
}

public static void method1() throws FileNotFoundException, ClassNotFoundException
{
    //Throws FileNotFoundException if the file doesn't exist
    FileInputStream fis = new FileInputStream("C2:\badFileName.txt");
}

"এবং এখানে আমরা এটি একটি চেষ্টা-ক্যাচ দিয়ে ধরি :"

বিকল্প 2: ব্যতিক্রম ধরুন:
public static void main(String[] args)
{
    try
    {
        method1();
    }
    catch(Exception e)
    {
    }
}

public static void method1() throws FileNotFoundException, ClassNotFoundException
{
    //Throws FileNotFoundException if the file doesn't exist
    FileInputStream fis = new FileInputStream("C2:\badFileName.txt");
}

"এটা আরও পরিষ্কার হতে শুরু করেছে।"

"নিম্নলিখিত উদাহরণটি দেখুন। এটি আপনাকে বাকিটা বুঝতে সাহায্য করবে।"

ব্যতিক্রমগুলি পরিচালনা করার পরিবর্তে, আমরা সেগুলিকে কল স্ট্যাকের নীচের পদ্ধতিতে পুনঃনিক্ষেপ করি যারা সেগুলি কীভাবে পরিচালনা করতে জানে:
public static void method2() throws FileNotFoundException, ClassNotFoundException
{
    method1();
}
একটি ব্যতিক্রম পরিচালনা করুন এবং অন্যটি নিক্ষেপ করুন:
public static void method3() throws ClassNotFoundException
{
   try
    {
        method1();
    }
    catch (FileNotFoundException e)
    {
        System.out.println("FileNotFoundException has been caught.");
    }
}
উভয় ব্যতিক্রম ধরুন, কিছুই নিক্ষেপ করুন:
public static void method4()
{
    try
    {
        method1();
    }
    catch (FileNotFoundException e)
    {
        System.out.println("FileNotFoundException has been caught.");
    }
    catch (ClassNotFoundException e)
    {
        System.out.println("ClassNotFoundException has been caught.");
    }
}
3
কাজ
Java Syntax,  লেভেল 9পাঠ 4
লক করা আছে
Code entry
Your attention, please! Now recruiting code entry personnel for CodeGym. So turn up your focus, let your fingers relax, read the code, and then... type it into the appropriate box. Code entry is far from a useless exercise, though it might seem so at first glance: it allows a beginner to get used to and remember syntax (modern IDEs seldom make this possible).

"আরো এক ধরনের ব্যতিক্রম আছে, RuntimeException এবং ক্লাস যা এটিকে উত্তরাধিকারী করে। আপনাকে তাদের ধরতে হবে না। এগুলি অচেক করা ব্যতিক্রম। এগুলি ভবিষ্যদ্বাণী করা কঠিন বলে মনে করা হয়। আপনি তাদের সাথে একইভাবে মোকাবেলা করতে পারেন, কিন্তু আপনি থ্রো ক্লজে সেগুলি নির্দেশ করার দরকার নেই ।"