如果没有catch块,哪个异常处理程序将处理该异常?
public class Doubt {
public static void main(String arg[])
{
System.out.println("hi");
int i=10;
int j;
try
{
j=i/0;//Arithmatic exception type object is created but no catch block so who will catch d exception..
}
finally
{
System.out.println("shit");
}
System.out.println("program still running");
}
}
无。try..finally
块根本不捕获异常。它用于确保finally
块中的代码得到执行(即使在try
块中发生异常时)。即使try
中有返回语句,finally
块也将始终执行。
除了切断计算机电源或突然关闭JVM(或者在某些情况下中断执行try
代码的线程)之外,没有办法跳过finally
块。
添加捕获块以捕获异常:
try {
j=i/0;
} catch(Excecption e) {
e.printStackTrace();
} finally {
System.out.println("shit");
}
Java中有三种类型的异常:
- 选中-你被迫使用try-catch块,如果你不这样做-你的程序将不会编译
- 未选中(运行时异常)-这些异常由jre引发。在您的示例中,您不能在编译时确定所有内容。可以用一些数字除以用户输入,而不是你的i/0。当用户传递0时,您将获得运行时异常。未经处理将使应用程序崩溃
- 错误-通常情况下,这与上面的几乎相同,但这与jvm故障有关,如内存损坏等
JVM系统将捕获异常并意外崩溃。添加except语句以处理异常或正常退出。
尝试阻止
try块包含一组可能发生异常的语句。try块后面总是跟有catch块,catch块处理相关try块中发生的异常。try块后面必须跟catch块或finally块,或者两者都跟。
捕获块
catch块是处理异常的地方,这个块必须跟在try块后面。一个try块可以有多个catch块与之关联。您可以在不同的catch块中捕获不同的异常。当try块中发生异常时,处理该特定异常的相应catch块将执行。例如,如果try块中发生算术异常,则执行包含在catch块中的算术异常语句。
https://beginnersbook.com/2013/04/try-catch-in-java/从中得到一些想法。。