1.异常的定义
就是在程序运行过程中所发生的不正常时间,它会中断正在运行的程序。
2.格式
try{
把可能出现异常的代码放入次代码块中
}catch(异常类型 对象名){
处理异常
}finally{
不管try或catch是否允许,此代码块都必须要执行的
}
3.抛出异常
throw throws
位置: throw 语句内
throws 方法上
内容: throw 异常对象
throws 异常类型
注意:try代码块数量只有一个;
catch代码块可以有多个,且异常范围从上到下依次增大;
finally代码块只有一个,如果try代码块中有return语句,也会先执行finally代码块,再执行try代码块中return语句;
finally代码块唯一不执行的情况,编写退出语句:System.exit(0);
看如下异常的使用代码
/**
* 自定义异常类
* @author SunMing
* @date 2018年3月31日
*
*/
public class NumberException extends Exception{
//构造方法
public NumberException(){}
public NumberException(String Message){
super(Message);
}
}
测试异常
public class Test {
public static void main(String[] args) {
int i = 10;
try{
i = 10/0;
//手动抛出异常对象
throw new NumberException("输入的除数不能是0");
//catch异常对象
}catch(NumberException e){
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
finally{
System.out.println("haha");
}
}
}
上面自定义了一个异常类,下面测试类手动抛出了这个异常类对象
异常类对象图
异常类的分类:
Error:严重错误,紧靠程序无法恢复,比如JVM内存溢出,系统崩溃等问题的系统级错误,不需要再程序中处理。
CheckedException: 检查时异常,再编译期间就会报错,是程序员产生的错误,需要在程序中进行手动处理才能编译通过。
RuntimeException:运行时异常,在运行期间才会产生的错误,能够编译通过,运行会出错,可以处理,也可以不处理。
附:常见异常类
ArithmeticException, ArrayIndexOutOfBoundsException, NullPointerException, ClassCastException, ClassNotFoundException, FileNotFoundException, IOException.