مدیریت استثنا در جاوا – انجمن DEV

Summarize this content to 400 words in Persian Lang
وقتی یک کد یا برنامه جاوا را اجرا می کنید، یا کامپایل و اجرا می شود یا خطا می دهد. وقتی یک کد یک را پرتاب می کند، نتیجه یک خطا یا یک استثنا است.
خطا مهم تر است. خارج از محدوده کد اما در محیطی که برنامه در آن اجرا می شود رخ می دهد. انتظار نمی رود که برنامه خطا را بگیرد و رسیدگی کند.
چند نمونه از خطاها هستند
OutOfMemoryError
خطای ماشین مجازی
StackOverFlowError
استثناها در محدوده کد رخ می دهد. همچنین به عنوان خطای اجرا شناخته می شود به این معنی که در هنگام اجرای کد رخ می دهد. از برنامه نویس انتظار می رود که استثنائات یک برنامه را بگیرد و رسیدگی کند.
این پست بیشتر بر روی استثناها و خطاهای زمان اجرا تمرکز خواهد کرد. شما همه چیز را در مورد استثناها و نحوه رسیدگی به خطاهای استثنا در برنامه جاوا خود خواهید آموخت.
انواع خطاهای اجرا در جاوا
سه نوع خطای اجرا در جاوا وجود دارد. در اینجا به تفکیک هر یک از آنها می پردازیم
. خطای زمان کامپایل
این نوع خطا به عنوان خطای کامپایل یا خطای بررسی شده شناخته می شود. یک برنامه جاوا این کد را در مرحله کامپایل پرتاب می کند.
به عبارت دیگر، این خطا زمانی رخ می دهد که کد جاوا در بایت کد کامپایل می شود. خطای زمان کامپایل معمولاً به دلیل یک خطا در نحو کد ایجاد می شود.
به عنوان مثال، زمانی که برنامه نویس نتواند یک نقطه ویرگول در انتهای یک عبارت اضافه کند یا یک متغیر را قبل از چاپ مقداردهی اولیه کند.
public class JavaExceptionCodes {
public static void main (String []args){
int y = 10 //no semicolon
System.out.println(y);
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
. خطای زمان اجرا
خطای زمان اجرا به عنوان خطای استثنا یا خطای بررسی نشده نیز شناخته می شود. زمانی که برنامه در حال اجرا است رخ می دهد. کد کامپایل می شود اما در زمان اجرا با خطا مواجه می شود.
خطای زمان اجرا را می توان بیشتر به استثناهای داخلی یا استثناهای تعریف شده توسط کاربر طبقه بندی کرد. نمونه هایی از استثناهای داخلی عبارتند از:
ArrayIndexOutOfBoundsException
استثنا حسابی
FileNotFoundException
NullPointerException
به عنوان مثال، اگر کاربر به جای یک رشته، یک int وارد کند یا مقادیری بزرگتر از اندازه یک آرایه را درج کند.
public class JavaExceptionCodes {
public static void main (String []args) {
int nombas[] = {1, 2, 3, 4, 5};
System.out.println(nombas[6]);
}
}
//ArrayIndexOutOfBoundsException
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
. خطای منطقی
این خطا که به عنوان خطای معنایی نیز شناخته می شود، در صورتی رخ می دهد که در خروجی منطقی برنامه خطایی وجود داشته باشد. به عنوان مثال، 3 + 3 خروجی 7 را نشان می دهد، یا زمانی که وارد حساب خود می شوید و در نمایه دیگری قرار می گیرید.
خطای زمان کامپایل سادهترین خطا برای یافتن است زیرا IDE شما همیشه این خطا را به برنامهنویس نشان میدهد. خطای منطقی در اکثر مواقع سخت ترین خطا برای مشاهده است زیرا کد زمان کامپایل یا خطای زمان اجرا را ایجاد نمی کند.
مفهوم رسیدگی به استثنا
مدیریت استثنا برای شناسایی خطاها در یک برنامه و حفظ جریان عادی اجرای یک برنامه استفاده می شود. معمولاً هنگامی که برنامه ای خطا می دهد، اجرای کد متوقف می شود.
گرفتن و رسیدگی به خطاها از قبل، برنامه را قادر می سازد تا از بلوک کد دارای خطا عبور کند و بقیه برنامه را اجرا کند.
روش های رسیدگی به استثنا:
سعی کنید – گرفتن – در نهایت – پرتاب – پرتاب لیستی از روش ها برای مدیریت استثنا در جاوا است. بیایید هر یک از آنها را با مثال هایی با جزئیات بشکنیم:
. تلاش كردن
Try برای محصور کردن یک خط یا بلوکهای کد استفاده میشود که ممکن است یک استثنا ایجاد کند. همچنین یک try تو در تو وجود دارد که یک try با یک بلوک (های) try داخلی است. آنها در خدمت همین هدف هستند.
نحو
try{
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
. گرفتن
catch یک بلوک از کد است که برای گرفتن خطاهای پرتاب شده در بلوک try استفاده می شود.
نحو
try{
}
catch (Exception e){
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
چند بلوک گرفتن
public class JavaExceptionCodes {
public static void main (String []args) {
int x = 10;
int y = 0;
int z ;
int nombas [] = {5, 6, 7, 8, 9};
try {
System.out.println(z = x / y);
System.out.println(nombas[6]);
}
catch (ArithmeticException e){
System.out.println(“Can’t divide by 0. Choose another number” + e);
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println(“Array Out Of Bound” + e);
}
System.out.println(“End”);
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
. سرانجام
در نهایت، یک بلوک کد اختیاری است که معمولاً بعد از بلوکهای کد try and catch قرار میگیرد. برای اجرای کدهای مهم استفاده می شود. بلوک نهایی همیشه اجرا می شود چه برنامه خطا بدهد یا نه.
نحو
try{
}
catch (Exception e){
}
finally{
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
. پرت كردن
Throw یک کلمه کلیدی است که برای پرتاب یک استثنا در یک متد یا بلوک کد استفاده می شود.
نحو
public class JavaExceptionCodes {
public static void main (String []args) {
try { throw new ArithmeticException(“Try Run”);
}
catch (ArithmeticException e){
System.out.println(“Catch Exception Error”);
}
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
. پرتاب می کند
برخلاف کلمه کلیدی throw، از کلمه کلیدی throws برای پرتاب استثنا استفاده نمی شود. با این حال، مشخص می کند که ممکن است یک استثنا در روش وجود داشته باشد. Throws در امضای متد استفاده می شود و در داخل متد نیست.
بهترین روش ها برای رسیدگی به استثناها
یک بلوک try می تواند چندین دستور (خط کد) داشته باشد. بهتر است چندین بلوک catch ایجاد کنید تا خطا در هر عبارت را دریافت کنید.
اگر با چند بلوک catch کار می کنید، همیشه نوع استثنا را مشخص کنید.
اگر چندین دستور در یک بلوک try وجود دارد و شما دستور خطا را نمیدانید، یک استثنا کلی نهایی در انتهای سایر استثناها ایجاد کنید تا خطاهای ناشناخته را بگیرید.
همیشه بلوک فراگیر استثنای عمومی را در انتهای سایر بلوکهای استثنایی دیگر قرار دهید.
وقتی یک کد یا برنامه جاوا را اجرا می کنید، یا کامپایل و اجرا می شود یا خطا می دهد. وقتی یک کد یک را پرتاب می کند، نتیجه یک خطا یا یک استثنا است.
خطا مهم تر است. خارج از محدوده کد اما در محیطی که برنامه در آن اجرا می شود رخ می دهد. انتظار نمی رود که برنامه خطا را بگیرد و رسیدگی کند.
چند نمونه از خطاها هستند
- OutOfMemoryError
- خطای ماشین مجازی
- StackOverFlowError
استثناها در محدوده کد رخ می دهد. همچنین به عنوان خطای اجرا شناخته می شود به این معنی که در هنگام اجرای کد رخ می دهد. از برنامه نویس انتظار می رود که استثنائات یک برنامه را بگیرد و رسیدگی کند.
این پست بیشتر بر روی استثناها و خطاهای زمان اجرا تمرکز خواهد کرد. شما همه چیز را در مورد استثناها و نحوه رسیدگی به خطاهای استثنا در برنامه جاوا خود خواهید آموخت.
انواع خطاهای اجرا در جاوا
سه نوع خطای اجرا در جاوا وجود دارد. در اینجا به تفکیک هر یک از آنها می پردازیم
. خطای زمان کامپایل
این نوع خطا به عنوان خطای کامپایل یا خطای بررسی شده شناخته می شود. یک برنامه جاوا این کد را در مرحله کامپایل پرتاب می کند.
به عبارت دیگر، این خطا زمانی رخ می دهد که کد جاوا در بایت کد کامپایل می شود. خطای زمان کامپایل معمولاً به دلیل یک خطا در نحو کد ایجاد می شود.
به عنوان مثال، زمانی که برنامه نویس نتواند یک نقطه ویرگول در انتهای یک عبارت اضافه کند یا یک متغیر را قبل از چاپ مقداردهی اولیه کند.
public class JavaExceptionCodes {
public static void main (String []args){
int y = 10 //no semicolon
System.out.println(y);
}
}
. خطای زمان اجرا
خطای زمان اجرا به عنوان خطای استثنا یا خطای بررسی نشده نیز شناخته می شود. زمانی که برنامه در حال اجرا است رخ می دهد. کد کامپایل می شود اما در زمان اجرا با خطا مواجه می شود.
خطای زمان اجرا را می توان بیشتر به استثناهای داخلی یا استثناهای تعریف شده توسط کاربر طبقه بندی کرد. نمونه هایی از استثناهای داخلی عبارتند از:
- ArrayIndexOutOfBoundsException
- استثنا حسابی
- FileNotFoundException
- NullPointerException
به عنوان مثال، اگر کاربر به جای یک رشته، یک int وارد کند یا مقادیری بزرگتر از اندازه یک آرایه را درج کند.
public class JavaExceptionCodes {
public static void main (String []args) {
int nombas[] = {1, 2, 3, 4, 5};
System.out.println(nombas[6]);
}
}
//ArrayIndexOutOfBoundsException
. خطای منطقی
این خطا که به عنوان خطای معنایی نیز شناخته می شود، در صورتی رخ می دهد که در خروجی منطقی برنامه خطایی وجود داشته باشد. به عنوان مثال، 3 + 3 خروجی 7 را نشان می دهد، یا زمانی که وارد حساب خود می شوید و در نمایه دیگری قرار می گیرید.
خطای زمان کامپایل سادهترین خطا برای یافتن است زیرا IDE شما همیشه این خطا را به برنامهنویس نشان میدهد. خطای منطقی در اکثر مواقع سخت ترین خطا برای مشاهده است زیرا کد زمان کامپایل یا خطای زمان اجرا را ایجاد نمی کند.
مفهوم رسیدگی به استثنا
مدیریت استثنا برای شناسایی خطاها در یک برنامه و حفظ جریان عادی اجرای یک برنامه استفاده می شود. معمولاً هنگامی که برنامه ای خطا می دهد، اجرای کد متوقف می شود.
گرفتن و رسیدگی به خطاها از قبل، برنامه را قادر می سازد تا از بلوک کد دارای خطا عبور کند و بقیه برنامه را اجرا کند.
روش های رسیدگی به استثنا:
سعی کنید – گرفتن – در نهایت – پرتاب – پرتاب لیستی از روش ها برای مدیریت استثنا در جاوا است. بیایید هر یک از آنها را با مثال هایی با جزئیات بشکنیم:
. تلاش كردن
Try برای محصور کردن یک خط یا بلوکهای کد استفاده میشود که ممکن است یک استثنا ایجاد کند. همچنین یک try تو در تو وجود دارد که یک try با یک بلوک (های) try داخلی است. آنها در خدمت همین هدف هستند.
نحو
try{
}
. گرفتن
catch یک بلوک از کد است که برای گرفتن خطاهای پرتاب شده در بلوک try استفاده می شود.
نحو
try{
}
catch (Exception e){
}
چند بلوک گرفتن
public class JavaExceptionCodes {
public static void main (String []args) {
int x = 10;
int y = 0;
int z ;
int nombas [] = {5, 6, 7, 8, 9};
try {
System.out.println(z = x / y);
System.out.println(nombas[6]);
}
catch (ArithmeticException e){
System.out.println("Can't divide by 0. Choose another number" + e);
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("Array Out Of Bound" + e);
}
System.out.println("End");
}
}
. سرانجام
در نهایت، یک بلوک کد اختیاری است که معمولاً بعد از بلوکهای کد try and catch قرار میگیرد. برای اجرای کدهای مهم استفاده می شود. بلوک نهایی همیشه اجرا می شود چه برنامه خطا بدهد یا نه.
نحو
try{
}
catch (Exception e){
}
finally{
}
. پرت كردن
Throw یک کلمه کلیدی است که برای پرتاب یک استثنا در یک متد یا بلوک کد استفاده می شود.
نحو
public class JavaExceptionCodes {
public static void main (String []args) {
try { throw new ArithmeticException("Try Run");
}
catch (ArithmeticException e){
System.out.println("Catch Exception Error");
}
}
}
. پرتاب می کند
برخلاف کلمه کلیدی throw، از کلمه کلیدی throws برای پرتاب استثنا استفاده نمی شود. با این حال، مشخص می کند که ممکن است یک استثنا در روش وجود داشته باشد. Throws در امضای متد استفاده می شود و در داخل متد نیست.
بهترین روش ها برای رسیدگی به استثناها
-
یک بلوک try می تواند چندین دستور (خط کد) داشته باشد. بهتر است چندین بلوک catch ایجاد کنید تا خطا در هر عبارت را دریافت کنید.
-
اگر با چند بلوک catch کار می کنید، همیشه نوع استثنا را مشخص کنید.
-
اگر چندین دستور در یک بلوک try وجود دارد و شما دستور خطا را نمیدانید، یک استثنا کلی نهایی در انتهای سایر استثناها ایجاد کنید تا خطاهای ناشناخته را بگیرید.
-
همیشه بلوک فراگیر استثنای عمومی را در انتهای سایر بلوکهای استثنایی دیگر قرار دهید.