در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش جاوا (Java) قسمت 29 : معرفی و شرح Exception ها قسمت 1

با سلام به همه دوستان و همراهان Itpor. در برنامه نویسی ممکن است خطاهایی پیش بیاید که در همه حال این اتفاق نیفتد و در طی افتادن اتفاق یا اتفاقات خاصی یک خطا رخ دهد. به همین دلیل به این نوع خطاها استثنا گفته می شود. زبان جاوا در برخود با استثناها بسیار خوب عمل می کند. در این مطلب قصد دارم نحوه برخورد و پردازش استثناها را شرح دهم. یک استثنا یا رویداد استثنایی مشکلی است که هنگام اجرای برنامه رخ می دهد. وقتی که یک استثنا رخ می دهد برنامه از جریان اجرای نرمال خود خارج می شود و به طور غیر عادی برنامه بسته می شود. حتما شما این مثال ها را در برنامه های خود دیده اید. برای مثال در زمان ویندوز xp حالاتی اتفاق می افتاد که برنامه ها خطای به اصطلاخ Don’t send پیدا می کردند و یا در سیستم عامل اندروید برنامه ای stopped working می شود. این ها حالاتی هستند که در برنامه استثنایا exception رخ می دهد. در مقابله با exception ها باید قبل از این که این خطاها باعث کرش کردن برنامه شود آن را مدیریت کرد و در صورت لزوم پیام مناسبی به کاربر داده شود.اتفاق افتادن یک exception می تواند دلایل مختلفی داشته باشد که در زیر به چند تا از آنها اشاره کرده ایم:

  1. وقتی که کاربری داده نامعتبر و غلط وارد کرده است
  2. قصد داریم فایلی را باز کنیم در حالی که فایل مورد نظر بر روی دیسک و در آدرس مورد نظر موجود نیست.
  3. زمانی که یک اتصال شبکه قطع می شود و یا حافظه jvm کم می آید.

دلیل اتفاق افتادن برخی از این exception ها خطای کاربر است و برخی دیگر خطای برنامه نویس و برخی دیگر هم مشکلات منابع سخت افزاری و مشکلات موجود در آنها می باشد. بنابر این exception ها را به سه بخش تقسیم می کنیم که باید بدانیم هرکدام را چگونه مدیریت کنیم.

Exception های چک شده

یک exception چک شده exceptionی است که در زمان کامپایل برنامه اتفاق می افتد. این exception ها را نمی توان به راحتی نادیده گرفت این exception ها باید توسط برنامه نویس مدیریت شوند. برای مثال اگر از کلاس FileReader استفاده می کنید که یک فایل را بخوانید، اگر حدس می زنید که ممکن است که فایل مورد نظر موجود نباشد پس ممکن است یک exception از نوع FileNotFoundException رخ بدهد و در زبان جاوا کامپایلر کاربر را مجبورم می کند تا این exception را مدیریت نماید. برای مثال اگر شما سعی کنید که برنامه زیر را کامپایل کنید:

import java.io.File;
import java.io.FileReader;

public class FilenotFound_Demo {

   public static void main(String args[]){		
      File file=new File("E://file.txt");
      FileReader fr = new FileReader(file); 
   }
   
}

در این صورت برنامه خطای زیر را به شما خواهد داد:

FilenotFound_Demo.java:8: error: unreported exception FileNotFoundException; must be caught or declared to be thrown
      FileReader fr = new FileReader(file);
                      ^
1 error

دقت داشته باشید که چون متدهای read, close در کلاس FileReader ممکن است exception از نوع IOException را تولید کنند کامپایلر از کاربر می خواهد که این exception را نیز مدیریت نماید.

Exceptionهای چک نشده

یک exception چک نشده exceptionی است که در زمان اجرا اتفاق می افتد که شامل خطاهای برنامه نویسی مانند خطاهای منطقی یا استفاده نادرست از API ها می باشد. می توان این exception ها را در زمان کامپایل نادیده گرفت. برای مثال اگر شما یک آرایه را با سایز 5 معرفی کرده باشید و بخواهید از خانه 6ام آن استفاده کنید exception ی به نام ArrayIndexOutOfBoundsExceptionexception رخ خواهد داد. برای مثال به کد زیر دقت کنید

public class Unchecked_Demo {
   
   public static void main(String args[]){
      int num[]={1,2,3,4};
      System.out.println(num[5]);
   }

}

اگر شما کد بالا را اجرا کنید خطای زیر را دریافت خواهید کرد.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
	at Exceptions.Unchecked_Demo.main(Unchecked_Demo.java:8)

خطاها Errors

البته این نوع خطاها exception محسوب نمی شوند. اما مشکلاتی هستند که به خاطر عدم کنترل توسط کاربر و یا برنامه نویس رخ می دهد اتفاق می افتند. خطاها هنگام کامپایل توسط کامپایلر نادیده گرفته می شوند به خاطر این که به ندرت اتفاق می افتند. برای مثال اگر خطایی مانند سرریز شدن پشته (stack overflow) رخ دهد یک خطا اتفاق می افتد.

سلسله مراتب exception ها

مانند بقیه قسمت های زبان برنامه نویسی جاوا که از کلاس ها تشکیل شده اند exception ها نیز هرکدام دارای کلاس خاص خود می باشند. که همه ی کلاس های Exception ها از کلاس java.lang.Exception ارث بری کرده اند. کلاس exception نیز خود زیر کلاسی از کلاس Throwable می باشد. به غیر از کلاس Exception کلاس Error نیز از کلاس Throwable مشتق شده است. خطاها شرط های غیر طبیعی هستند که در زمان های خرابی اتفاق می افتند و فکری به حال آنها نشده است و آنها پیش بینی نشده اند. کلاس Exception دو زیرکلاس اصلی دارد. کلاس IOException و کلاس RuntimeException دو زیرکلاس کلاس Exception هستند که بقیه کلاس های Exception از آنها ارث بری کرده اند. در شکل زیر سلسله مراتب این کلاس ها آورده شده است.

آموزش جاوا (Java) قسمت 29 : معرفی و شرح Exception ها قسمت 1

همانطور که گفته شد یکی از مهمترین و معمول ترین Exception ها از نوع RuntimeException می باشد. Exception های زیر مجموعه ای از Exception های چک نشده زیرکلاس RuntimeException هستند.

  • ArithmeticException: این Exception در زمانی که خطایی در محاسبات ریاضی رخ داده باشد اتفاق می افتد. برای مثال زمانی که تقصیم بر صفر انجام شود این Exception رخ خواهد داد.
  • ArrayIndexOutOfBoundsException: این exception زمانی رخ می دهد که اندیس خارج از خانه های آرایه باشد.
  • ArrayStoreException زمانی که نوع داده ای که در خانه آرایه ریخته می شود با خود نوع آرایه متفاوت باشد این exception رخ خواهد داد.
  • ClassCastException این Exception در زمان تبدیل نوع و تبدیل کلاس رخ می دهد. و زمانی این اتفاق می افتد که جاوا نتواند تبدیل نوع را انجام بدهد.
  • IllegalArgumentException زمانی که از آرگومان های ورودی نامعتبر برای فراخوانی یک متد استفاده شود این exception رخ خواهد داد.
  • NegativeArraySizeException زمانی که یک آرایه با سایز منفی ساخته شود این exception رخ می دهد.
  • NullPointerException این استثنا زمانی اتفاق می افتد که از اشیائی استفاده کنیم که مقداردهی نشده باشند و null هستند.
  • NumberFormatException این استثنا زمانی رخ می دهد که بخواهیم یک متن را به عدد تبدیل کنیم ولی متن مورد نظر دارای قالب عددی صحیحی نباشد.
  • UnsupportedOperationException این exception زمانی رخ می دهد که از عملیاتی استفاده شود که زبان جاوا از آن پشتیبانی نکند.

Exception های زیر نیز exceptionهای چک شده معمول هستند.

  • ClassNotFoundException این exception برای زمانی است که کلاس مورد نظر پیدا نشود.
  • IllegalAccessException زمانی که بخواهیم به کلاسی که دسترسی نداریم دسترسی داشته باشیم این استثنا رخ خواهد داد.
  • InstantiationException زمانی که بخواهیم از یک کلاس abstract و یا اینترفیس یک شئ بسازیم این استثنا رخ خواهد داد.
  • NoSuchFieldException وقتی که فیلد مورد نظر وجود نداشته باشد این استثنا رخ خواهد داد
  • NoSuchMethodExceptionزمانی که متد مورد نظر وجود نداشته باشد این استثنا رخ خواهد داد.

تا به این قسمت از مطلب به معرفی exception ها پرداختیم. در مطالب بعدی به مدیریت هرکدام از این exception ها خواهیم پرداخت.Itpro باشید

نویسنده: مهدی عادلی فر

منبع: جزیره برنامه نویسی و توسعه نرم افزار وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.

#مدیریت_خطاها_در_کدنویسی #برنامه_نویسی_جاوا #آموزش_برنامه_نویسی_جاوا #انواع_exception_ها_در_جاوا #مدیریت_خطاها_در_جاوا #انواع_استثناها_در_جاوا #آموزش_جاوا #مدیریت_استثنا_ها_در_جاوا #پردازش_استثناها_در_جاوا #دوره_آموزشی_جاوا
عنوان
1 آموزش جاوا (Java) قسمت 1 : معرفی ، خصوصیات و شروع به کار رایگان
2 آموزش جاوا (Java) قسمت 2 : شی گرایی قسمت یک رایگان
3 آموزش جاوا (Java) قسمت 3: شی گرایی قسمت دو رایگان
4 آموزش جاوا (Java) قسمت 4 : شی گرایی قسمت سه رایگان
5 آموزش جاوا (Java) قسمت 5 : انواع داده رایگان
6 آموزش جاوا (Java) قسمت 6 : انواع متغیر رایگان
7 آموزش جاوا (Java) قسمت 7 : Modifier ها رایگان
8 آموزش جاوا (Java) قسمت 8 : عملگرها قسمت یک رایگان
9 آموزش جاوا (Java) قسمت 9 : عملگرها قسمت دو رایگان
10 آموزش جاوا (Java) قسمت 10 : حلقه های تکرار رایگان
11 آموزش جاوا (Java) قسمت 11 : عبارات شرطی رایگان
12 آموزش جاوا (Java) قسمت 12 : کلاس Wrapper اعداد رایگان
13 آموزش جاوا (Java) قسمت 12 : کلاس Wrapper اعداد رایگان
14 آموزش جاوا (Java) قسمت 14: کلاس Wrapper کاراکترها رایگان
15 آموزش جاوا (Java) قسمت 15 : کلاس String و کار با رشته قسمت یک رایگان
16 آموزش جاوا (Java) قسمت 16 : کلاس String و کار با رشته قسمت دو رایگان
17 آموزش جاوا (Java) قسمت 17 : کلاس String و کار با رشته قسمت سه رایگان
18 آموزش جاوا (Java) قسمت 18 : کلاس String و کار با رشته قسمت چهار رایگان
19 آموزش جاوا (Java) قسمت 19 : StringBuilder و StringBuffer رایگان
20 آموزش جاوا (Java) قسمت 20 : استفاده از آرایه ها رایگان
21 آموزش جاوا (Java) قسمت 21 : آموزش کار با تاریخ رایگان
22 آموزش جاوا (Java) قسمت 22 : عبارات منظم (Regular Expression) رایگان
23 آموزش جاوا (Java) قسمت 23 : تعریف و استفاده از متدها قسمت یک رایگان
24 آموزش جاوا (Java) قسمت 24 : تعریف و استفاده از متدها قسمت دو رایگان
25 آموزش جاوا (Java) قسمت 25 : کار با استریم ها و فایل ها رایگان
26 آموزش جاوا (Java) قسمت 26 : کار با دایرکتوری ها رایگان
27 آموزش جاوا (Java) قسمت 27 : کلاس ByteArrayInputStream رایگان
28 آموزش جاوا (Java) قسمت 28 : معرفی کلاس File و متدها رایگان
29 آموزش جاوا (Java) قسمت 29 : معرفی و شرح Exception ها قسمت 1 رایگان
30 آموزش جاوا (Java) قسمت 30 : معرفی و شرح Exception ها قسمت 2 رایگان
31 آموزش جاوا (Java) قسمت 31 : معرفی و شرح Exception ها قسمت 3 رایگان
32 آموزش جاوا (Java) قسمت 32 : استفاده از انوع کلاس های داخلی رایگان
33 آموزش جاوا (Java) قسمت 33 : وراثت کلاس ها و انواع آن رایگان
34 آموزش جاوا (Java) قسمت 34 : Override کردن متد ها رایگان
35 آموزش جاوا (Java) قسمت 35 : چند ریختی (Polymorphism) رایگان
36 آموزش جاوا (Java) قسمت 36 : Enum و ویژگی های آن رایگان
37 آموزش جاوا (Java) قسمت 37 : معرفی Abstract رایگان
38 آموزش جاوا (Java) قسمت 38 : استفاده از کپسول بندی (Encapsulation) رایگان
39 آموزش جاوا (Java) قسمت 39 : استفاده از اینترفیس ها رایگان
40 آموزش جاوا (Java) قسمت 40 : پکیج(Package) و نحوه استفاده رایگان
41 آموزش جاوا (Java) قسمت 41 : معرفی داده ساختارها Enumeration رایگان
42 آموزش جاوا (Java) قسمت 42 : داده ساختار BitSet رایگان
43 آموزش جاوا (Java) قسمت 43 : داده ساختار Vector رایگان
44 آموزش جاوا (Java) قسمت 44 : داده ساختار Stack (پشته) رایگان
45 آموزش جاوا (Java) قسمت 45 : داده ساختار Dictionary رایگان
46 آموزش جاوا (Java) قسمت 46 : داده ساختار Hashtable رایگان
47 آموزش جاوا (Java) قسمت 47 : داده ساختار Properites رایگان
48 آموزش جاوا (Java) قسمت 48 : معرفی و آموزش جنریک (Generic) رایگان
49 آموزش جاوا (Java) قسمت 49 : برنامه نویسی سوکت و شبکه قسمت 1 رایگان
50 آموزش جاوا (Java) قسمت 50 : برنامه نویسی سوکت و شبکه قسمت 2 رایگان
51 آموزش جاوا (Java) قسمت 51 : استفاده از Lambda Expression رایگان
52 آموزش جاوا (Java) قسمت 52 : Thread و Multi-Threading رایگان
53 آموزش جاوا (Java) قسمت 53 : Runnable در Thread و Multi-Threading رایگان
54 آموزش جاوا (Java) قسمت 54 : کلاس Thread و متدها رایگان
زمان و قیمت کل 0″ 0
2 نظر
خرمدینی

تشکر

این نظر توسط مهدی عادلی در تاریخ چهارشنبه, 12 مهر 1396 حذف شده است.

دلیل: پیام فاقد بعد فنی می باشد

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....