java中try-catch的完整过程是什么?

时间:2016-03-15 20:03:39

标签: java exception try-catch

我一直在尝试使用try-catch,并且特别关注它是如何工作的。

try                                     // x is array of 10 doubles set to 0
        {
            for (int a = 0; a < 11; a+= 2)
                x[a] = 5;
        }
        catch(Exception e)
        {
            System.out.println("error");
        }

在这种情况下,可以到达数组中的所有值,但代码在x [10]处中断。那么,是否将所有值都设置为5?

try                             // x is array of 10 doubles set to 0
        {
            for (int a = -1; a < 11; a+= 2)
                x[a] = 5;
        }
        catch(Exception e)
        {
            System.out.println("error");
        }

在这种情况下,它将尝试x [-1]并捕获错误。那么,它不会返回并完成循环(x [0],x [1],... x [9])?那么,所有值仍然是0?

这是try-catch的工作原理吗? 任何帮助将不胜感激 谢谢。

3 个答案:

答案 0 :(得分:1)

是的,两个示例都会抛出 ArrayIndexOutOfBoundsException

所以, try块包含一个程序语句块,在其中可能发生异常。 try block 后面总是跟着 catch块,它处理关联的 try块中出现的异常 try block 必须后跟 Catch block Finally block 两者

catch块必须与 try块相关联。如果 try块中出现特定类型的异常,则执行相应的 catch bloc k。例如,如果 try block 中出现算术异常,那么 catch block 中包含的语句将执行算术异常

try
{
     //statements that may cause an exception
}
catch (exception(type) e(object))‏
{
     //error handling code
}

如果 try block 中出现异常,则执行控制权将从 try block 传递到 catch块 EM>。 异常会被相应的 catch块捕获。单个 try块可以包含多个 catch语句,但每个 catch块都可以为< strong>只有一个例外类。该程序还可以包含嵌套的 try-catch-finally块

执行所有 try blocks 后,执行 finally块中的代码。根本不包含 finally块,但如果这样做,它将运行,无论是否抛出并处理异常通过尝试并捕获块

答案 1 :(得分:0)

的try-catch

try块中的代码是将运行的代码,但如果try块中的代码抛出异常/错误,则会在catch块中捕获。

您的代码的问题是您使用x作为数组并且您可能无法在数组中设置特定位置,以设置您可以执行类似x.push或x.put的操作我不是确定在特定的属性,因为我不熟悉java。另一个问题可能是您的索引超出范围,这意味着您可能有一个包含零项的10个项目的数组,并且您正在尝试访问第11项。所以你的循环应该是这样的:

    {
        for (int a = 0; a < x.length; a+= 2)
            x[a] = 5;
    }

答案 2 :(得分:0)

当一个语句在try块内抛出异常时,下一个语句是catch块的第一个语句。

在第一个示例中,for循环的前几次迭代正常发生,元素0,2,4,6和8设置为5。在a10的迭代中,尝试访问x[10]运行时抛出ArrayIndexOutOfBoundsException并跳转到catch块的第一个语句。 x的其余部分未经修改。

在第二个示例中,for循环的第一次迭代导致运行时抛出ArrayIndexOutOfBoundsException(由于尝试访问x[-1])并跳转到catch块的第一个语句。结果是x完全没有修改。

有关Java中的例外的更多信息,请阅读The Java Tutorials: Exceptions