Using a try Statement
Exceptionu handle (idarə) etmək üçün try
ifadəsindən istifadə edilir. Sintaksisi belədir*:
Try blokunda kodlar normal icra olunur. Əgər exception baş verərsə, bu zaman try
blokunun icrası dayanır və icra catch
blokuna keçir. Əgər try
blokunda heç bir exception baş verməsə, o zaman catch
bloku (“block” və ya “clause“, hər ikisi işlədilə bilər) icra olunmur.
try
ifadəsi də metodlar kimidir, try
və catch
bloklarının tərkibinə bir ifadə də daxil olsa belə yenə də mötərizə tələb edir:
try // DOES NOT COMPILE test3(); catch(Exception e) // DOES NOT COMPILE System.out.println("I am catch block");
Compile olunması üçün mötərizələr əlavə olunmalıdır:
try { test3(); } catch(Exception e){ System.out.println("I am catch block"); }
try
bloku təklikdə işlədilə bilməz, ondan sonra ya catch
, ya da finally
bloku gəlməlidir:
try { // DOES NOT COMPILE test3(); }
Adding a finally Block
finally
bloku try
ifadəsinin sonunda gəlir və sintaksisi belədir**:
Əgər exception baş verərsə, finally
bloku catch
blokundan sonra, yox əgər baş verməsə try
blokundan sonra icra edilir. Amma catch
blokundan fərqli olaraq finally
bloku exception baş verib verməməsindən asılı olmayaraq həmişə icra edilir (bir istisnadan başqa).
Qeyd etdik ki, try
bloku təklikdə işlədilə bilməz, ancaq try-with-resources catch və ya finally bloku olmadan təklikdə işlənə bilər. Lakin try-with-resources OCP imtahanının mövzusudur, OCA imtahanındakı nümunələrdə try
bloku mütləq catch
və ya finally
bloku ilə birlikdə işlədilməlidir və catch
bloku finally
blokundan sonra gələ bilməz:
try { test3(); } finally { System.out.println("I am finally block"); } catch(Exception e) { // DOES NOT COMPILE System.out.println("I am catch block"); } try { // DOES NOT COMPILE test3(); } try { test3(); } finally { System.out.println("I am finally block"); }
finally
blok varsa, catch
bloku tələb olunmur.
Biz qeyd etmişdik ki, finally
blok həmişə icra olunur, amma bir istisna var. Əgər try
və ya catch
blokunda System.exit(0);
çağırılarsa, proqram sonlanır və finally
blok icra olunmur. Amma System.exit(0);
-dən sonra yazılan kodlar “unreachable code” kimi compile xətası vermir, baxmayaraq ki, System.exit(0);
-dən sonra yazılan heç bir kod icra olunmur.
[topics lang=az]