(OCA Level)
public class ExceptionClass {
static String s = "-";
public static void main(String[] args) {
try {
throw new Exception();
throw new Exception();
} catch (Exception e) {
try {
try {
try {
try {
throw new Exception();
} catch (Exception ex) {
s += "ic ";
}
throw new Exception();
} catch (Exception x) {
s += "mc ";
s += "mc ";
} finally {
s += "mf ";
}
} finally {
s += "of ";
}
System.out.println(s);
}
}
} finally {
s += "of ";
}
System.out.println(s);
}
}
What is the result? (Explanation's required)
A) -ic of
B) -mf of
C) -mc mf
D) -ic mf of
E) -ic mc mf of
F) -ic mc of mf
G) Compilation fails
B) -mf of
C) -mc mf
D) -ic mf of
E) -ic mc mf of
F) -ic mc of mf
G) Compilation fails
Explain:
Mürəkkəb struktura malik try ifadəsidir. Belə nümunələrdə gərək ilk öncə kodun compile olunub olunmamasını yoxlayaq, hər şeyin qaydasında olduğuna əmin olduqdan sonra artıq output`u hesablamaq olar.
Try, catch və ya finally bloklarının içərisində başqa bir try ifadəsi işlətmək mümkündür, ona görə də birinci catch blokunda verilmiş sintaksis səhv deyil. Sadəcə burada try ifadəsi ilə bağlı bəzi vacib məqamları bilmək lazımdır:
- try bloku təklikdə işlədilə bilməz, ondan sonra mütləq catch və ya finally bloklarından biri gəlməlidir;
- eyni zamanda catch və ya finally blokları ancaq try bloku ilə birgə istifadə edilə bilər, təklikdə istifadə edilə bilməz;
- finally bloku catch blokundan sonra gəlməlidir, əks halda compile xətası verir.
Qeyd olunan bütün qaydalar ödənilir, ona görə də kod normal compile olunur. Artıq output`u hesablamaq olar:
1. 1) blokunda exception baş verir, ona görə də 2) bloku icra edilir;
2. 2.1.1) blokunda exception baş verir və 2.1.2) bloku icra edilir;
3. sonra 2.1) blokunda exception baş verir və 2.2) bloku icra edilir;
4. 2.3) bloku icra edilir;
5. 3) bloku icra edilir.
Cavab: E
Try, catch və ya finally bloklarının içərisində başqa bir try ifadəsi işlətmək mümkündür, ona görə də birinci catch blokunda verilmiş sintaksis səhv deyil. Sadəcə burada try ifadəsi ilə bağlı bəzi vacib məqamları bilmək lazımdır:
- try bloku təklikdə işlədilə bilməz, ondan sonra mütləq catch və ya finally bloklarından biri gəlməlidir;
- eyni zamanda catch və ya finally blokları ancaq try bloku ilə birgə istifadə edilə bilər, təklikdə istifadə edilə bilməz;
- finally bloku catch blokundan sonra gəlməlidir, əks halda compile xətası verir.
Qeyd olunan bütün qaydalar ödənilir, ona görə də kod normal compile olunur. Artıq output`u hesablamaq olar:
1. 1) blokunda exception baş verir, ona görə də 2) bloku icra edilir;
2. 2.1.1) blokunda exception baş verir və 2.1.2) bloku icra edilir;
3. sonra 2.1) blokunda exception baş verir və 2.2) bloku icra edilir;
4. 2.3) bloku icra edilir;
5. 3) bloku icra edilir.
Cavab: E
Comments
Post a Comment