好吧,从一本书我得到以下几行:
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");
}
}
答案 0 :(得分:2)
未经检查的异常不需要由try-catch
子句声明或包围,而不是已检查的异常。
如果查看Javadoc,可以看到ArithmeticException
的继承树如下:
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.ArithmeticException
因此,它是RuntimeException
的子类,因此是未经检查的异常。未经检查的例外有RuntimeException
,Error
及其所有子类。
您可以在Java tutorials中详细了解不同类型的例外情况。
答案 1 :(得分:2)
Unchecked Exception
是未经检查的;-P
不,严肃地说,编译器/ jvm不会强制您的代码检查是一个例外。这些通常(总是?)是运行时异常,例如NullPointerException
。
运行时异常通常是在执行时间之前无法正确预测和/或处理的异常 - 因此会导致程序执行崩溃。
您可以在自己的代码中使用try/catch
块明确地“检查”它们,但通常最好通过空值检查来处理它们等。
if (str != null) {
// do stuff
}