صفحه 1:
مظفر بگ محمدی دانشكاه ايلام

صفحه 2:
رسیدگی به خطاها در یک جهان ایده آل تمام خطاها در هنگام کامپایل کد اتفاق می افتد و رفع می شوند. لذا هنگام اجرا خطایی رخ نمی دهد. اما در واقعیت اینطور نیست. © خطاها هنگام اجراى كد اتفاق می افتند و باید توسط مکانیسمی مورد رسیدگی قرار گیرند که: به تولید کننده (یا تشخیص دهنده) ی خطا اجازه می‌دهد که اطلاعات خطا را به گیرنده ی خطا ارسال نماید و این گيرنده است که می داند با خطا چکار کند.

صفحه 3:
روش رسیدگی به خطاها در ‎C‏ #define DEPOSIT NEGATIVE -1 #define DEPOSIT OK 0 int VerifyDeposit(int amount) { if (amount < 0 ) return DEPOSIT NEGATIVE; else return DEPOSIT OK } int depositStatus = VerifyDeposit(amt) ; if (depositStatus == DEPOSIT OK) } // do something good } else { // deal with the error }

صفحه 4:
روش بهتر رسیدگی به خطا ؟ تفکیک تشخیص خطا از رسیدگی به خطا # پیاده کننده ی کلاس خطاها را تشخیص می دهد. # کاربر کلاس تصمیم مى كيرد که با خطا چکار کند. خروح از برنامه چاپ پیفام مناسب و ادامه ی برنمه اجرای مجده متد دارای خطا سوال از کاربر یا هر کار مناسب دیگر کاهش پیچیدگی کد کد عادی برنامه که اگر اتفاق ناجوری نیفتد کار خواهد کرد » از کدی که به خطاها رسیدگی می کند جدا شده جاوا برنامه نویس را مجبور می کند که به خطا رسیدگی کند.

صفحه 5:
try-throw-catch روش پایه ی رسیدگی به خطاها در جاوا استفاده از سه گانه ی ‎«cul throw-catch‏ try- ©

صفحه 6:
try-throw-catch ju. Scanner in = new Scanner( System.in); System.out.println( “Enter Amt: “); try { int amt = in.nextInt( ); if (amt < 0) throw new Exception( “Negative value was input”); System.out.println (“Thanks for your deposit”); // more code that assumes the amt is not negative catch( Exception e ) // do something about the exception 1 55۲۵۲۰۵۵۰۵۲۱۸۸) ۳۲۵۷۵ a nice day”);

صفحه 7:
بلوک ۲۲۷ # کدی که ممکن است استشا تولید کند در داخل بلوک ۲۷ قرار می گیرد. #بلوک ۲۷ شامل کد اصلی الگوریتم یا برنامه ی کاربر است. این بلوک روند درست انجام کار را مشخص می کند. © کدی که به خطا رسیدگی می کند در داخل بلوک 31:11 قرار می گیرد. #بلوک 631611 بلافاصله بعد از بلوک 79۷ قرار دارد.

صفحه 8:
throw, وقتی که کد برنامه خطا را تشخیص داد یک شی از نوع استتا را گسیل می کند. public class BankAccount { private int balance; public BankAccount( ) { balance = public int getBalance( ) { return balance; } // precondition — amount must be nonnegative // throws an exception if amount is negative // postcondition — balance updated public int deposit( int amt ) throws Exception { if (amt <0) throw new Exception(“Deposit is Negative” ); balance += amt;

صفحه 9:
2 م کد درست سپرده گذاری در بانک public class DepositExample { public static void main( String[ ] args ) { BankAccount myAccount = new BankAccount( ); try { Scanner input = new Scanner( System.in ); System.out.print(“Enter deposit amount: “); int amt = input.nextInt(); myAccount.deposit( amt ); System.out.println( “New Balance = “ + myAccount .getBalance()) ; catch (Exception e) { // code that “handles” a negative deposit System. out.println( e.getMessage( )); + System.out.println( “GoodBye” );

صفحه 10:
( try-throw-catch ‏مکانیسم‎ #هنگام گسیل استشنه اجرای کد بلوک 172 متوقف می شود و اجرا به بلوک 1 منتقل می شود. مقدار گسیل شده همان پارامتر دستور 0۲0۷۷ است و یک شی از کلاس استثنا اسث. #بلوک 011۱ یک پارامتر دارد که از طریق دستور 0۲0۷۷ برای آن گسیل می شود. #اجرای بلوک ‎CATCH‏ همان عمل رسیدگی به استثتا است.

صفحه 11:
2 م ‎try-throw-catch 21,‏ catch( Exceptione) {.. . } © شناسه ی 6 در سرآیند بلوک ۵111 همان پارامتر بلوک ‎.cwicatch‏ ‏© پارامتر بلوک 6016 دو کاربرد دارد: 2 مشخص کردن نوع استثقای گسیل شده (در مثال فوق ‎(Exception‏ ‏نامگذاری استثنا (در مثال فوق همان 6). می توان به جای 6 از هر اسم دیگری استفاده کرد. | © )

صفحه 12:
try-catch Control Flow [| ‏لو(‎ codes kere

صفحه 13:
try-catch Control Flow حالت ۲ AS ge Ap td SHY Sh ‏اجرای بلوک 137 متوقف می شود.‎ ‏اجراى بلوك 2617© شروع می شود.‎ يعد از اتمام اجرلى بلوك 8112© بقیه ی براه زا می شود ‎hore‏ موی م09 |

صفحه 14:
کلاسهای "6266011010 * زبان جاوا کلاسی به اسم 8266۳131011 تعریف کرده است. © در کتابخانه های جاوا کلاسهای استثغای دیگری نیز وجود دارند. برنامه نویس می تواند کلاس استثشای جدیدی تعریف ‎AS‏ تمام کلاسهای استثنای تعریف شده توسط جاوا دو خاصیت دارند: یک جزء سازنده دارند که آرگومان آن از نوع رشته است. یک متد به اسم 961655306 دارند که رشته ی ارسال شده به كلاس استثنا در هنكام ساخت شی را بر می گرداند. * کلاسهای استششای تعریف شده توسط پرنامه نويس نيز بايد اين خاصيتها را داشته باشند.

صفحه 15:
کلاس ۴6266۵۳010۳ © كلاس 2766011011 ريشه ى بقيه بى كلاسهاى استثنا است. © اكر جه مى توان از كلاس 0131011 ©2066 مستقيماً استفاده كرد بهتر است كه از اين کلاس یک كلاس جديد مشتق کنیم و از آن استفاده کنیم. 8 کلاس ۲۱666۳31010 در بسته ی 12110 ۰ 2۷2 [ قرار دارد که نیازی به ]101۴00۲ ندارد.

صفحه 16:
استفاده از متد 9611655306 . // method code try { throw new Exception( StringArgument ) ۲ Pa 8 catch(Exception e) { String message = e.getMessage(); System. out. println (message) ; System.exit(0); ع ۶ 8

صفحه 17:
استفاده از متد 961۳1655306 © هر استثنا يك متغيير نمونه از نوع رشته دارد که شامل یک پیغام است. اين بيغام دليل خطا را مشخص می کند. #در مثال 45« ‎gh 1 StringArgument‏ جزء سازنده ى ‎«cui Exception‏ می توان با دستور 536 96165 ۰ 6() مقدار اين رشته را از استتای 6 استخراج کرد.

صفحه 18:
>) حفظ خاصیت مای ‎getMessage‏ ‏# در کلاسهای استثنای تعریف شده توسط کاربر متد 6 9611165539 باید رشته ای را بر گرداند که هنگام ایجاد شی به عنوان آررگومان به شی داده شده است. یا اگر جز سازنده ی بدون آرگومان صدا زده شود؛ باید از پیغام پیش فرض استفاده شود. #اتذادر كلاسهاى احا سرين عند بويط كارين: یک جزء سازنده وجود داشته باشد كه يك رشته بعنوان آركومان ببذيرد و بدنه ى با فراخوانى !© (]لا5 شروع شود. یک جزء سازنده ى بدون آركومان بايد وجود داشته باشد كه 0](©1ا5 را فراخوانى کند. * متد 51106۲ حتما باید یک آ رگومان از نوع رشته داشته باشد.

صفحه 19:
AProgrammer-Defined Exception ۱ Clace Display 9.3 A Programmer-Defined Exception Class 1 public class DivisionByZeroException extends Exception 24 3 public DivisionByZeroException() You can do more in an exception 4 { constructor, but this form is common. 5 super("Division by Zero 6 1 7 public DivisionByZeroException(String message) ۲ 1 super is an invocation of the constructor for 9 super (message) ; the base class Exception, 18 1 1 [

صفحه 20:
( نكته: كلاس استثنا مى تواند غير از رشته متغییرهای دیگری نیز داشته باشد. © مى توان جز سازنده اى داشت كه آركومان آن از نوع رشته نباشد. مقدار را در يك متغيير نمونه ذخيره مى كنيم. براى اين متغيير -خصوصى بایدمتد دسترسی (96) را تعريف

صفحه 21:
يك كلاس استشا با بيغام :131 ‘int Message Display 9.5 _ An Exception Class with 1 public class BadNumberException extends Exception 9 public BadNunberException() 8 4 a super("BadNunberException"); RB} 13 public BadNunberException(string message) uf 35 super(nessag 17 8 9 20 a?

صفحه 22:
سازنده ها و استثناها اكر يارامتر نادرستى به یک جزء سازنده ارسال شود» مى توانيم يك استشا توليد كنيم. ‎public class BankAccount {‏ ‎private int balance;‏ public BankAccount( int startingBalance ) throws Exception { if (startingBalance < 0) throw new BadNumberException( startingBalance ); balance = startingBalance;

صفحه 23:
>) ny ng constructors public class BankAccoun { public static void main( String[ ] args ) { BankAccount myAccount; // outside the try block??? try { Scanner in = new Scanner( System.in ); System.out.print( “Input starting balance: “ ); int startBalance = in.nextInt( ); myAccount = new BankAccount( startBalance ); // more of the good stuff here + catch (BadNumberException bne ) // handle the bad input System. out.println(“Deposits must be postive”); Sysetem.out.println(“You entered “ + bne.getBadNumber()); + System.out.printin( “good bye “);

جهت مطالعه ادامه متن، فایل را دریافت نمایید.
32,000 تومان