throw关键字
throw的作用:抛出一个异常,并且抛出的是一个异常类的实例化对象,且在异常处理时,try语句要捕获一个异常对象,也可以自行抛出
throw关键字的应用
package com.yby.test;
class MyException extends Exception{
String message;
public MyException(String exceptionMes) {
message = exceptionMes;
}
}
public class throwTest {
public static void main(String[] args){
int a=9,b=0;
int res= 0;
try {
//res = quotient(2, 0);
if(b==0) {
throw new MyException("b不能为0");
}
} catch (MyException e) {
System.out.println(e.message);
}finally {
System.out.println(res);
}
}
}
作用
其实throw的作用就是抛出一个自定义异常类,那么扩展一下,我们的自定义异常类有何作用呢?
- 我们在工作的时候,项目是分模块或者分功能开发的 ,基本不会你一个人开发一整个项目,使用自定义异常类就统一了对外异常展示的方式。
- 有时候我们遇到某些校验或者问题时,需要直接结束掉当前的请求,这时便可以通过抛出自定义异常来结束,如果你项目中使用了SpringMVC比较新的版本的话有控制器增强,可以通过@ControllerAdvice注解写一个控制器增强类来拦截自定义的异常并响应给前端相应的信息(关于springMVC控制器增强的知识有空再和大家分享)。
- 自定义异常可以在我们项目中某些特殊的业务逻辑时抛出异常,比如”中性”.equals(sex),性别等于中性时我们要抛出异常,而Java是不会有这种异常的。系统中有些错误是符合Java语法的,但不符合我们项目的业务逻辑。
- 使用自定义异常继承相关的异常来抛出处理后的异常信息可以隐藏底层的异常,这样更安全,异常信息也更加的直观。自定义异常可以抛出我们自己想要抛出的信息,可以通过抛出的信息区分异常发生的位置,根据异常名我们就可以知道哪里有异常,根据异常提示信息进行程序修改。比如空指针异常NullPointException,我们可以抛出信息为“xxx为空”定位异常位置,而不用输出堆栈信息。