1. 什么是异常
Exception,异常指程序运行中出现的不期而至的各种状况:非法参数等影响了正常程序执行流程。
简单分类
Error
Exception
2. 异常体系结构
3. Java异常处理机制
1. 抛出异常
2. 捕获异常
3. 异常处理五个关键字:try,catch,finally,throw,throws
4. 处理异常
public static void main(String[] args){
int a=1;
int b=0;
try{
//监控区域
if(b==0){
throw new ArithmeticException();// 主动抛出异常 throw throws
}
System.out.println(a/b);//选中 Ctrl+alt+t或者command+option+t 快捷键
}catch (ArithmeticException e){
System.out.println("程序出现异常,变量b不能为0");
}catch(Error e){
System.out.println("程序出现异常,变量b不能为0");
//捕获异常,从小到大 Error,Exception Throwable
}finally{
// 处理善后工作
System.out.println("finally");
//finally 可以不用写 在io 资源流关闭需要
}
}
5. 自定义异常
使用Java内置的异常类可以描述在编程时出现的大部分异常情况。用户自定义异常类,只需继承Exception类
在程序中使用自定义异常类,分为以下几个步骤
1. 创建自定义异常类
2. 在方法中通过throw 关键字抛出异常对象
3. 如果在当前抛出异常的方法中处理异常,可以使用try—catch 语句捕获并处理;否则在方法的声明处
通过throws 关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
4. 在出现异常方法的调用者中捕获并处理异常。
package Day08;
//自定义异常类
public class MyException extends Exception {
//传递数字>10;
private int detail;
//构造器Mac下快捷键cmd+n
public MyException( int a) {
this.detail = a;
}
//tostring异常打印
@Override
public String toString() {
return "MyException{" +
"detail=" + detail +
'}';
}
}
package Day08;
//测试异常
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) {
//e.printStackTrace();
//增加一些处理异常的代码块
System.out.println(e);
}
}
}
6. 总结
1. 处理运行时异常时,采用逻辑去合理规避同时辅助 try-catch 处理
2. 在多重 catch块后面,可以加一个catch (Exceotion)来处理可能会被遗漏的异常
3. 对于不确定的代码可加上 try-catch 处理潜在的异常
4. 切记只是简单地调用printStackTrace()去打印输出
5. 尽量添加 finally 语句去释放占用的资源