首页  >  文章  >  Java  >  嵌套的 try 块

嵌套的 try 块

Susan Sarandon
Susan Sarandon原创
2024-10-19 14:09:31784浏览

Blocos try aninhados

嵌套 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 块允许单独处理不同类型的错误:
  • 较小的错误(例如被零除)可以在本地处理,从而允许程序继续。
  • 更严重的错误(例如超出数组范围的访问)可以被外部块捕获,从而导致更激烈的操作,例如程序终止。

结论:

  • 当不同类别的错误需要以不同的方式处理时,使用嵌套的 try 块非常有用。
  • 这可以更灵活地控制程序的执行流程,允许您在内部处理轻度异常,并将严重异常留给外部块。

以上是嵌套的 try 块的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn