异常类型
在Java中,有两种异常类型,分别是检查性异常和运行时异常(又叫非检查异常)。
主要区别在于检查性异常在编译时被检查,而在运行时检查未经检查的异常。
检查异常是运行时异常以外的异常, 也是Exception及其子类, 这些异常从程序的角度来说是必须经过捕捉检查处理的, 否则不能通过编译. 如IOException、SQLException等
运行时异常都是RuntimeException类及其子类, 如 NullPointerException、IndexOutOfBoundsException等, 这些异常是不检查的异常, 是在程序运行的时候可能会发生的, 所以程序可以捕捉, 也可以不捕捉. 这些错误一般是由程序的逻辑错误引起的, 程序应该从逻辑角度去尽量避免.
正如在上一个小节中所提到的,Thread.sleep()抛出一个InterruptedException。这是一个检查性异常的例子。在处理异常之前,你的代码将不会编译。如下图所示:
InterruptedException代码如下:
public class MyJavaClass {
public static void main(String[] args) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// 其余代码
}
}
}
我们在之前的小节中,有遇到过运行时检查未经检查的异常例子。
下面是一个例子(尝试除以0):
public class MyJavaClass {
public static void main(String[] args) {
int value = 5;
value = value / 0;
}
}
/*
Exception in thread "main" java.lang.ArithmeticException: / by zero
at MyJavaClass.main(MyJavaClass.java:4)
*/
网友评论