我确定我会为此感到震惊......但我来自一个没有try
/catch
块的语言,我正在学习 Java 异常捕获,我很难看到它不是只是一个惰性版本的验证。我看过一些例子,例如:
String Box [] = {"Book", "Pen", "Pencil"};
while(i<4)
{
try
{
System.out.println(Box[i]);
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("Subscript Problem " + e);
i++;
}
和:
int y = 0;
int x = 1;
// try block to "SEE" if an exception occurs
try
{
int z = x/y;
System.out.println("after division");
}
catch (ArithmeticException ae)
{
System.out.println(" attempt to divide by 0");
}
这些显然是非常基本的例子......但IMO要么这些是捕捉错误的可怕例子,要么没有充分的理由这样做。在示例一中,如果我们循环查找元素的数量,Box
我们不需要检查越界索引。在示例二中,如果我们检查除数 0,我们不需要检查 0 ArithmeticException
。
有没有一个很好的例子或理由说明使用try
/catch
块比老式的变量验证更好?还是只是“Java”方式?