如果没有catch块,哪个异常处理程序将处理异常?

时间:2015-02-12 15:07:10

标签: java exception try-catch-finally

如果没有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");

    }
}

4 个答案:

答案 0 :(得分:2)

无。 try..finally块根本不会捕获异常。 它用于确保finally块中的代码被执行(即使try块中发生异常)。即使finally中有return语句,try块也会一直执行。

如果没有从计算机切断电源或突然关闭JVM(或者在某些情况下中断执行try代码的线程),则无法跳过finally块。< / p>

添加一个catch块来捕获异常:

try {
    j=i/0;
} catch(Excecption e) {
    e.printStackTrace();
} finally {
    System.out.println("shit");
}

答案 1 :(得分:1)

Java中有三种类型的例外:

  1. 已检查 - 您被迫使用try catch块,如果您不这样做 - 您的程序将无法编译
  2. 未选中(运行时异常) - jre抛出这些异常。在您的示例中,您无法在编译时确定所有内容。而不是你的i / 0可能有一些数字除以用户输入。当用户传递0时 - 您将获得运行时异常。未处理将导致应用程序崩溃。
  3. 错误 - 通常这与上面几乎相同,但这与jvm失败有关,如内存损坏等。

答案 2 :(得分:0)

JVM系统将捕获异常并且不合理地崩溃。添加except语句以处理异常或正常退出。

答案 3 :(得分:0)

尝试阻止

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/从中得到一些想法。