绪论
整理学习笔记,记录一下。
正文
异常分类,仅供参考。
异常抛出
- throw:将产生的异常抛出(动作)
- throws:声明将要抛出何种类型的异常(声明)
public void divide(int num1, int num2) throws Exception{
if (num2 == 0) {
throw new Exception("除数不能为零!");
} else {
System.out.println("结果为:" + num1/num2);
}
}
自定义异常: 要继承相近的异常类或者所有异常的父类Exception。
异常链: 可以把捕获的异常包装成一个新的异常,然后在新的异常里面添加对原始异常的引用,再把新异常抛出,它们就像链式反应一样,一个导致另一个。
public void divide(int num1, int num2) throws Exception {
if (num2 == 0) {
throw new Exception("除数不能为零!");
} else {
try {
System.out.println("结果为:" + num1 / num2);
} catch (NullPointerException e) {
RuntimeException run = new RuntimeException();
run.initCause(e);
throw run;
}
}
}
经验与总结
- 处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理。
- 在多重catch块后面,可以加一个catch(Exception e) 来处理可能会被遗漏的异常。
- 对于不确定的代码,也可以加上try-catch,处理潜在的异常。
- 尽量去处理异常,切忌只是简单的调用printStackTrace()去打印输出。
- 具体如何处理异常,要根据不同的业务需求和异常类型去决定。
- 尽量添加finally语句块去释放占用的资源。
(若有什么错误,请留言指正,3Q)