
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
什么是异常?
昆明IT培训的老师给大家随便列举几个异常:
RuntimeException:你不能跑得足够快,可能因为你太胖了。关掉你的电脑,出门锻炼吧。
NullPointerException:你没有狗。请你先找一只狗,比如一只布烈塔尼獵犬,然后再试一次。
IndexOutOfBoundsException:你把食指放在了无法接收的地方,重新放置,再试一次。
FileNotFoundException:一名木匠应该总是知道他的工具放在哪里。
NotSerializableException:你正试图把一部电影改成电视剧。
自定义异常
今天昆明IT培训的老师要来理解的是什么是自定义异常,为什么要使用自定义异常,使用自定义异常有哪些好处,有哪些不好的地方?
要使用自定义异常就跟你和女朋友相处一样的,首先你得知道你为什么要跟你女朋友在一起,你女朋友有哪些好处,有哪些不好的地方,再来和你女朋友谈婚论嫁过一辈子,我们就先来说说这些问题,最后再来看怎么使用自定义异常,自定义异常的实现和使用非常简单,关键还是理解why的内容。
为什么要使用自定义异常,有什么好处?
1.我们在工作的时候,项目是分模块或者分功能开发的,基本不会你一个人开发一整个项目,使用自定义异常类就统一了对外异常展示的方式。
2.有时候我们遇到某些校验或者问题时,需要直接结束掉当前的请求,这时便可以通过抛出自定义异常来结束,如果你项目中使用了SpringMVC比较新的版本的话有控制器增强,可以通过@ControllerAdvice注解写一个控制器增强类来拦截自定义的异常并响应给前端相应的信息(关于springMVC控制器增强的知识有空再和大家分享)。
3.自定义异常可以在我们项目中某些特殊的业务逻辑时抛出异常,比如"中性".equals(sex),性别等于中性时我们要抛出异常,而Java是不会有这种异常的。系统中有些错误是符合Java语法的,但不符合我们项目的业务逻辑。
4.使用自定义异常继承相关的异常来抛出处理后的异常信息可以隐藏底层的异常,这样更安全,异常信息也更加的直观。自定义异常可以抛出我们自己想要抛出的信息,可以通过抛出的信息区分异常发生的位置,根据异常名我们就可以知道哪里有异常,根据异常提示信息进行程序修改。比如空指针异常NullPointException,我们可以抛出信息为“xxx为空”定位异常位置,而不用输出堆栈信息。
说完了为什么要使用自定义异常,有什么好处,我们再来看看自定义异常的毛病:
毋庸置疑,我们不可能期待JVM(Java虚拟机)自动抛出一个自定义异常,也不能够期待JVM会自动处理一个自定义异常。发现异常、抛出异常以及处理异常的工作必须靠编程人员在代码中利用异常处理机制自己完成。这样就相应的增加了一些开发成本和工作量,所以项目没必要的话,也不一定非得要用上自定义异常,要能够自己去权衡。
最后,我们来看看怎么使用自定义异常:
在Java中你可以自定义异常。编写自己的异常类时需要记住下面的几点。
所有异常都必须是Throwable的子类。
如果希望写一个检查性异常类,则需要继承Exception类。
如果你想写一个运行时异常类,那么需要继承RuntimeException类。
可以像下面这样定义自己的异常类:
class MyException extends Exception{ }