Java异常处理
三.Java异常处理
(1)什么是异常?
异常就是代表程序出现的问题。Java会将异常封装成一个异常对象,抛给JVM虚拟机,JVM虚拟机会将程序暂停再将异常对象打印出来。
(2)异常的体系
所有异常都继承了Throwable类。
Error:代表的系统级别错误(属于严重问题),一般开发人员用不到,属于是sun公司自己用的。
Exception:代表程序可能出现的问题。
- RuntimeException运行时异常:编译阶段不会出现错误提醒,运行时出现的异常(例如数组越界)
- 其他异常:编译时异常:编译阶段会出现错误提醒的
(3)异常的处理
方法一:选中代码块,Ctrl+alt+T键选择try/catch将代码块包围捕获异常
try{
//监视的代码
}catch(异常类型1 变量){ //捕获异常
}catch(异常类型2 变量){ //捕获异常
}finally{ //无论是否出异常,都会执行
}
方法二:在方法上使用throws关键字,可以将方法内部出现的异常抛出去给调用者处理
public static void main(String[] args) throws 异常1,异常2,异常3{
}
(4)自定义异常
自定义运行时异常
运行时异常就是编译时不报错(编译器不提醒),程序运行时才报错
自定义运行时异常步骤:
- 定义一个异常类继承RuntimeException
- 重写构造器。
- 通过throw new异常类来创建异常对象并抛出
自定义运行时异常类:
public class MyException extends RuntimeException{ //继承RuntimeException
/*重写构造器*/
public MyException(){ //无参构造器
}
public MyException(String message){ //有参构造器
super(message); //将异常信息送给父类
}
}
自定义异常的使用
public MyClass{
public static void main(String[] args){ //主函数
try{
number(223); //调用方法
}catch(Exception e){ //捕获异常
e.printStackTrace(); //接收抛出的异常,打印异常信息
}
}
/*自定义方法*/
public static void number(int num){
if(num > 0 && num < 150){
System.out.println("合法数字":num);
}else{
//如果数字不合法,则抛出异常
throw new MyException("数字不合法:"+num);
}
}
}
自定义编译时异常
自定义编译时异常的方法与自定义运行时异常的方法相同,但自定义编译时异常需要继承的是Exception类。