未经检查的异常在java中意味着什么

时间:2014-04-21 18:35:57

标签: java exception-handling

好吧,从一本书我得到以下几行:

Java在标准包java.lang中定义了几个异常类。 这些异常中最常见的是标准类型RuntimeException的子类。由于java.lang被隐式导入到所有Java程序中,因此从RuntimeException派生的大多数异常都是自动可用的。

此外,它们不需要包含在任何方法的投放列表中。

那么,这不是说我不需要尝试捕获块吗?

我已完成以下代码,但显示错误:

 Exception in thread "main" java.lang.ArithmeticException: / by zero
at ArithCls.main(ArithCls.java:10)

代码:

import java.lang.*;
public class ArithCls {

public static void main(String[] args)
    {
    int a=20;
    int b=0;
    int c = a/b;
    System.out.println("After code");
}
}

2 个答案:

答案 0 :(得分:2)

未经检查的异常不需要由try-catch子句声明或包围,而不是已检查的异常

如果查看Javadoc,可以看到ArithmeticException的继承树如下:

java.lang.Object
    java.lang.Throwable
        java.lang.Exception
            java.lang.RuntimeException
                java.lang.ArithmeticException

因此,它是RuntimeException的子类,因此是未经检查的异常。未经检查的例外有RuntimeExceptionError及其所有子类。

您可以在Java tutorials中详细了解不同类型的例外情况。

答案 1 :(得分:2)

Unchecked Exception是未经检查的;-P

不,严肃地说,编译器/ jvm不会强制您的代码检查是一个例外。这些通常(总是?)是运行时异常,例如NullPointerException

运行时异常通常是在执行时间之前无法正确预测和/或处理的异常 - 因此会导致程序执行崩溃。

您可以在自己的代码中使用try/catch块明确地“检查”它们,但通常最好通过空值检查来处理它们等。

if (str != null) {

    // do stuff
}