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]


