Java 尝试捕获给出编译错误的块
我试图在try-catch块中添加一些代码,但在编译时失败了,我不知道哪里出了问题Java 尝试捕获给出编译错误的块,java,try-catch,Java,Try Catch,我试图在try-catch块中添加一些代码,但在编译时失败了,我不知道哪里出了问题 try { int x = 0; int y = 5 / x; } catch (Exception e) { System.out.println("Exception"); } catch (ArithmeticException ae) { System.out.println(" Arithmetic Exception"); } System.out
try
{
int x = 0;
int y = 5 / x;
}
catch (Exception e)
{
System.out.println("Exception");
}
catch (ArithmeticException ae)
{
System.out.println(" Arithmetic Exception");
}
System.out.println("finished");
有人能帮忙吗。使用:
try
{
int x = 0;
int y = 5 / x;
}
catch (ArithmeticException ae)
{
System.out.println(" Arithmetic Exception");
}
catch (Exception e)
{
System.out.println("Exception");
}
System.out.println("finished");
在处理异常时,在捕获子类异常之后,必须捕获更广泛的异常(超类异常,在您的情况下,异常是异常的超类)。否则,异常将被更宽的/父异常捕获块捕获,后一个代码将无法访问。因此它不会编译。使用:
try
{
int x = 0;
int y = 5 / x;
}
catch (ArithmeticException ae)
{
System.out.println(" Arithmetic Exception");
}
catch (Exception e)
{
System.out.println("Exception");
}
System.out.println("finished");
在处理异常时,在捕获子类异常之后,必须捕获更广泛的异常(超类异常,在您的情况下,异常是异常的超类)。否则,异常将被更宽的/父异常捕获块捕获,后一个代码将无法访问。所以它不会编译。例外Hiererchy说
ONCE YOU HAVE CAUGHT AN EXCEPTION IT NEEDS NOT TO BE CAUGHT AGAIN
因为您已经在第一个catch块中捕获到异常
因此,您的下一个捕捉块是无用的
您应该首先捕获子类,然后对于剩余的可能异常,其他异常应该捕获父异常类
试试这个
try
{
// your code throwing exception
}
catch (ArithmeticException ae)
{
// do something
}
catch (Exception e)
{
// do something
}
希里希说
ONCE YOU HAVE CAUGHT AN EXCEPTION IT NEEDS NOT TO BE CAUGHT AGAIN
因为您已经在第一个catch块中捕获到异常
因此,您的下一个捕捉块是无用的
您应该首先捕获子类,然后对于剩余的可能异常,其他异常应该捕获父异常类
试试这个
try
{
// your code throwing exception
}
catch (ArithmeticException ae)
{
// do something
}
catch (Exception e)
{
// do something
}
为了澄清这个答案,这是因为一般异常捕获总是在它下面的任何内容之前被调用,所以您不应该首先捕获它(一般来说,您无论如何都不应该捕获一般异常)。编辑:偷偷摸摸的编辑!为了澄清这个答案,这是因为一般异常捕获总是在它下面的任何内容之前被调用,所以您不应该首先捕获它(一般来说,您无论如何都不应该捕获一般异常)。编辑:偷偷摸摸的编辑+1表示“一旦捕获到异常,就不需要再次捕获”行:)+1表示“一旦捕获到异常,就不需要再次捕获”行:)虽然这个问题很容易被捕获,但在将来,如果您告诉我们您收到的实际错误消息是什么,这将很有帮助。其他问题可能更复杂,如果没有错误信息,有时可能是任何人的猜测。没有人比你的编译器更了解你的代码。虽然这个问题很容易被发现,但在将来,如果你告诉我们你收到的实际错误消息是什么,这会很有帮助。其他问题可能更复杂,如果没有错误信息,有时可能是任何人的猜测。没有人比编译器更了解您的代码。