java基础课堂随记10
异常机制
- 什么是异常
- 异常体系结构
- java异常处理机制
- 处理异常
- 自定义异常
- 总结
什么是异常?
异常的简单分类
异常体系结构:
Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类
在Java API中已经定义了许多异常类,这些异常类分为两大类,错误error和异常exception。
Error
Excepection
异常处理机制
抛出异常
捕获异常
异常处理五个关键字:
try,catch,finally,throw,throws
快捷键ctrl+alt+T,选中要测试的那一行,自动生成try,catch,finally
package exception;
public class Test {
public static void main(String[] args) {
// int a = 1;
// int b = 0;
new Test().test(1,0);
//如果需要捕获多个异常,则需要从小到大往下写,依次判断捕获
// try{//try可以用来监控区域
// System.out.println(a/b);
// }catch (Error e){//catch(想要捕获的异常类型) 捕获异常使用,最高的就是Throwable
// System.out.println("Error:程序出现异常,变量b不能为0");
// }catch (Exception e){
// System.out.println("Exception");
// }catch (Throwable t){
// System.out.println("Throwable");
// }
// finally{//处理善后工作
// System.out.println("finally");
// }
//finally 可以不要finally, 假设IO,资源,把它们关闭的操作一般用finally做
}
//假设这个方法中,处理不了这个异常,则在方法上抛出异常
public void test(int a,int b)throws ArithmeticException{
if(b==0){//主动地抛出异常 throw throws, 一般在方法中使用
throw new ArithmeticException();
}
System.out.println(a/b);
}
public void a(){b();}
public void b(){a();}
}
package exception;
public class Test2 {
public static void main(String[] args) {
int a = 1;
int b = 0;
//快捷键ctrl+alt+T,选中要测试的那一行,自动生成try,catch,finally
try {
System.out.println(a/b);
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}
自定义异常
package exception.demo2;
//自定义的异常类
public class MyException extends Exception{
//传递数字>10;
private int detail;
public MyException(int a) {
this.detail = a;
}
//toString:异常的打印信息
@Override
public String toString() {
return "MyException{" +
"detail=" + detail +
'}';
}
}
package exception.demo2;
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(1);
} catch (MyException e) {
System.out.println("MyException=>"+e);
}
}
}
传递的参数为:1
OK
实际应用中的经验总结
- 处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理
- 在多重catch块后面,可以加一个catch(Exception)来处理可能会被遗漏的异常
- 对于不确定的代码,也可以加上try-catch,处理潜在的异常
- 尽量去处理异常,切忌只是简单地调用printStackTrace()去打印输出
- 具体如何处理异常,要根据不同的业务需求和异常类型去决定
- 尽量添加finally语句块去释放占用的资源

浙公网安备 33010602011771号