Java言語で書いた次のプログラムがある。A.foo() を呼び出したときの返り値として適切なものを@〜Dの中から選べ。
class A {
static int foo() {
int x = 0;
try { x = B.bar(x); }
catch (Error y) { x += 4; }
finally { x += 8; }
return x;
}
}
class B {
static int bar(int x) throws Error {
try { throw new Error(); }
catch (Error y) { x += 1; }
finally { x += 2; }
return x;
}
}
@ 1 A 3 B 5 C 11 D 15
C
以下の処理を行う。
class A
int x = 0; ・・・ x に 0 を格納
class B
try { x = B.bar(0); } ・・・barメソッドを呼び出し。
try { throw new Error(); } ・・・例外を発生させる。
catch (Error y) { x += 1; } ・・・ x に 1 を加える (x=1)
finally { x += 2; } ・・・x に 2 を加える。 (x=3)
class A
finally { x += 8; } ・・・ x に 8 を加える。 (x=11)
W−1 | 目次 | W−3 |