异常机制
异常 exception 例外
检查性异常:用户错误或问题引发的异常 编译时不能简单忽略的
运行时异常 :可能被程序员避免的异常 运行时异常出现 编译时被忽略
错误Error:脱离程序员控制问题,在代码中通常被忽略
异常处理框架
Java将异常当作对象来处理 并定义了一个基类 Java.lang.Throwable作为所有异常的超类
分为错误Error 和异常 Exception
Error : 灾难性的致命错误
抛出异常 捕获异常 关键字:try catch finally throw throws
快捷键 选中所监测部分 ctrl +alt +t 7.8
package Demo07;
public class Test {
public static void main(String[] args) {
int a=1;
int b=0;
try{//try 监控区域
if(b==0){//throw
throw new ArithmeticException();//主动抛出异常
}
}catch(Error e){
System.out.println("Error");
} catch(Exception e){//捕获异常
System.out.println("Exception");
}catch(Throwable t){
System.out.println("Throwable");
} finally{//处理善后工作 可以没有
System.out.println("finally");
}
}
}
Exception
finally
自定义异常
自定义异常类 继承 Exception
1.创建自定义异常类
2.在方法中通过throw关键字抛出异常
3.用 try-catch语句捕获并处理 否则在方法声明处用throws抛出异常
4.在出现异常的方法的调用者中捕获并处理异常
package Demo07;
public class MyException extends Exception{
//传递数字>10;
private int detail;
public MyException(int a){
this.detail=a;
}
//toString:异常打印信息
public String toString(){
return "MyException{"+"detail="+detail+"}";
}
}
public class Test {
//可能存在异常的方法
static void test(int a) throws MyException {
System.out.println("传递的函数为:" + a);
if (a > 10) {
throw new MyException(a);//抛出
}
System.out.println("ok");
}
public static void main(String[] args) {
try {
test(11);
} catch (MyException e) {
System.out.println("MyException=>"+e);
}
}
传递的函数为:11
MyException=>MyException{detail=11}