ネストされた try ブロック:
try ブロックは別の try ブロックの中に配置できます。
例外が内側の try ブロックでキャッチされなかった場合、例外は外側の try ブロックに伝播されます。
例外の伝播:
内部ブロックで例外が発生し、内部ブロックで処理されない場合、外部ブロックでキャッチすることができ、制御された方法でプログラムを継続または終了できます。
ネストされた try のコード例:
次の例は、内側の try ブロックがゼロ除算エラーを処理するのに対し、外側の try ブロックは配列境界外のアクセス例外を処理することを示しています。
コード例:
// Usa um bloco try aninhado. class NestTrys { public static void main(String args[]) { // O array numer é mais longo que denom. int numer[] = { 4, 8, 16, 32, 64, 128, 256, 512 }; int denom[] = { 2, 0, 4, 4, 0, 8 }; try { // Bloco try externo for (int i = 0; i < numer.length; i++) { try { // Bloco try aninhado // Tenta realizar a divisão System.out.println(numer[i] + " / " + denom[i] + " is " + numer[i] / denom[i]); } catch (ArithmeticException exc) { // Captura exceção de divisão por zero System.out.println("Can't divide by Zero!"); } } } catch (ArrayIndexOutOfBoundsException exc) { // Captura exceção de acesso fora dos limites do array System.out.println("No matching element found."); System.out.println("Fatal error - program terminated."); } } }
プログラム出力:
ゼロによる除算が発生すると、例外は内部 try ブロックによってキャッチされ、プログラムは続行されます。
配列の境界外でインデックスエラーが発生すると、外側の try ブロックが例外をキャッチし、プログラムを終了します。~
出力例:
4 / 2 is 2 Can't divide by Zero! 16 / 4 is 4 32 / 4 is 8 Can't divide by Zero! 128 / 8 is 16 No matching element found. Fatal error – program terminated.
実際の使用:
結論:
以上がネストされた try ブロックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。