异常
1.Error
-
Error类对象由JAVA虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。
-
JAVA虚拟机运行错误(Virtual MachineError),当JVM不再有继续执行操作所需的内存资源时,将出现OutOfMemoryError。
这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。
-
这些错误是不可查的,因为它们在应用程序的控制和处理能力之外,而且绝大多数是程序运行时不允许出现的情况。
2.Exception
-
在exception分支中有一个重要的子类RuntimeException(运行时异常)
-
ArrayIndexOutOfBoundsException(数组下标越界)
-
NullPointerException(空指针异常)
-
ArithmeticException(算术异常)
-
MissingResourceException(丢失资源)
-
ClassNotFoundException(找不到类)等异常,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。
-
-
这些异常一般都是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常发生。
-
Error和Exception的区别:Error通常是灾难性的致命的错误,是程序无法控制和处理的,当出现这些异常时,java虚拟机(jvm)
一般会选择终止线程;Exception通常情况下是可以被程序处理的,并且在程序中应该尽可能地去处理这些异常。
3.异常处理机制
-
抛出异常
-
捕获异常
-
异常处理五个关键字:
try、catch、finally、throw、throws
引用笔记
throw和throws作为Java中两种异常抛出关键字,虽然两个长的很像,但是却有着很大的区别。
区别1:
throws:
跟在方法声明后面,后面跟的是异常类名
throw:
用在方法体内,后面跟的是异常类对象名
1
2
3
4
5
public static void method() throws ArithmeticException {// 跟在方法声明后面,后面跟的是异常类名
int a=10;
int b=0;
if(b==0) {
throw new ArithmeticException();用在方法体内,后面跟的是异常类对象名
}else {
System.out.println(a/b);
}
}
}
1
2
3
4
5
6
7
8
9
10
区别2:
throws:
可以跟多个异常类名,用逗号隔开
throw:
只能抛出一个异常对象名
1
2
3
4
5
public static void method() throws ArithmeticException,Exception {//跟多个异常类名,用逗号隔开
int a=10;
int b=0;
if(b==0) {
throw new ArithmeticException();// 只能抛出一个异常对象名
}else {
System.out.println(a/b);
}
}
}
1
2
3
4
5
6
7
8
9
10
区别3:
throws:
表示抛出异常,由该方法的调用者来处理
throw:
表示抛出异常,由该方法体内的语句来处理
1
2
3
4
5
public class throwandthrows {
public static void main(String[] args) {
try {
method();//由该方法的调用者来处理
}catch (ArithmeticException e) {
e.printStackTrace();
}
}
public static void method() throws ArithmeticException {
int a=10;
