جاوا زبانی است که در تعریف تابع ها و شرط ها باید چک کردن استثنا را در آن حتما رعایت کنیم در این پست به بحث throws IOException  خواهم پرداخت.

و اما throw یعنی چی؟ throw از لحاظ لغوی به معنی پرتاب هست. اما چه ربطی به بحث ما داره ؟

حتما دیدید همیشه می گن java بهترین زبون هست و از لحاظ امنیت حرف اول رو می زنه(وارد مبحث python نشید فعلا).یکی از دلایل اینکه جاوا امنیتی بسیار خوبی داره همینه که با استفاده از دستور throw می تونیم مدیریت خطا کنیم و دیگه نذاریم خطای رخ داده سیگنالش به کامپایلر یا مفسر برسه. می یایم به دستور throw خطاهای رخ داده رو پرتاب می کنیم به یه سمت دیگه. یا در اصطلاح پاس می دیم به بخشی داخل کدهای خودمون و این خطا رو می یایم تجزیه تحلیل می کنیم(با دستورات و توابع یا متدهای تعریف شده ی زبون جاوا).

ما خطاهای مختلفی داریم و برای مدیریت خطاهای مختلف کلاس های خاص وجود داره . مثلا IOException برای مدیریت استثنا(خطا)های ورودی خروجی هست.(دستوارت try catch هم داریم اینجا بحث نمی کنم)

دستور throw e خودش خودکار به کامپایلر دستور می ده اگه خطایی رخ داد به خروجی نبر ، پرتش کن توی جایی از حافظه که به متغیر e اختصاص دادیم. توی کدها هم می تونیم این e رو مدیریت کنیم مثلا e بذاریم بعدش نقطه بذاریم و ببینیم چیا داره.مثل کد خطا،مثل متن خطا،سطر و ستونی که خطا رخ داده و … .

 

یکی از روش ها برای مدیریت استثنا این است که از دستور معروف try catch  استفاده کنیم. try متد ما را انجام می دهد در صورتی که در این حین استثنایی رخ بدهد برنامه ما را به اعمالی که در catch قرار داده ایم انتقال خواهد داد. حتی می توانیم چندین استثنا جداگانه تعریف کنیم.


public void foo() {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
try {
in.readLine();// etc.
in.close();
} 
catch (IOException e) {
// handle the exception
}
catch (AnotherException e1) {
// handle the  another exception 
}

 برای اعلان مدیریت اسثنا باید از کلمه کلیدی throws IOException استفاده کنیم. کلمه کلیدی throws که اعلام می کند که یک روش ممکن است یک یا چند استثناء را ایجاد. برنامه نویس باید موارد استثنا را مدیریت کند.فرض کنید در برنامه جاوا شما از یک  کتابخانه ای استفاده می کنید که  امکان رخ دادن استثنا در آن وجود دارد.در برنامه خود، می توانید این استثنا را با استفاده از try & catch کنترل می کنید.

کتابخانه ی جاوا
شکل 1: کتابخانه ای که امکان رخ دادن استثنا در آن وجود دارد
import java.io.*;
class file1{
  public static void main(String[] args) {
     try{
           FileWriter file = new FileWriter("c:\\Data1.txt");
           file.write("Guru99");
           file.close();
    }
    catch(IOException){}
  }
}

 

اگر استثنا را در یک بلوک try  & catch  چک نکنید، کامپایل شکست خواهد خورد. اما تقریبا هر متد دیگر در کتابخانه جاوا یا حتی متد تعریف شده توسط کاربر  می تواند یک استثنا یا دو را پرتاب کند.پردازش تمام استثنائات با استفاده از بلوک try and catch می تواند بسیار دشوار باشد و مانع افزایش کارایی برنامه نویسی می شود. بنابراین جاوا یک گزینه را فراهم می کند، در هر زمان که شما از یک قطعه خطرناکی در تعریف متد استفاده می کنید بدون تعریف try & catch آن استثنا را مدیریت خواهد کرد. مثال مشابهی را در نظر بگیرید که در متد رها کردن استثنا  اعلام شده است.

import java.io.*;
class file1{
    public static void main(String[] args) throws IOException{
      FileWriter file = new FileWriter("c:\\Data1.txt");
      file.write("Guru99");
      file.close();
    }
}

توجه: در صورت اجرای موفقیت آمیز کدهای فوق، ابتدا یک فایل متنی خالی با نام Data1.txt در درایو C خود ایجاد  می کنید. به طور خلاصه، دو روش برای رسیدگی به استثنا وجود دارد.

1-استثنا را در بلاک try & catch مدیریت کنید.

2-استثنا توسط متدی که تعریف شده اعلان می شود که مدیریت شود.

 

برچسب‌ها , , , , , , , , , , , , , , , , , , ,


دیدگاهتان را بنویسید

Want to see your ugly mug by your comment? Get a free custom avatar at Gravatar.