又抛异常了?可能你对Java的异常体系还没了解到位
什么?这是谁的代码,抛出了大量的异常,这下全完了!写个代码抛出异常让人头疼,这篇文章就带你了解一下让你头疼的异常
异常的捕捉
所有的异常都是Exception类的子类,所以我们在try catch捕捉异常的时候不指名具体异常的话就直接catch Exception,这样所有的异常都会被拦截。对应catch捕捉异常的匹配,遵循就近原则,如果多个异常捕捉,第一个异常的捕捉匹配成功了,后面的异常捕捉就无需执行了。
下面这个例子体现了这一异常匹配逻辑:
try {
throw new Xpp();
} catch(Xpp s) {
System.out.println("Caught Xpp");
} catch(XppBase a) {
System.out.println("Caught XppBase");
}
Xpp继承XppBase,像Xpp异常匹配成功了,第二个异常捕捉的处理就不执行了,同理,调换他们的位置,对XppBase的捕捉生效,第二个异常捕捉得不到执行。
Throwable类
Throwable类有两个异常的子类,Error和Exception。Error类表示的时候编译时和系统的错误,一般不用管这个类。Exception类是我们程序员需要处理的类。RuntimeException是运行时异常,一般是代码逻辑写的有问题导致的,比如空指针、数组越界等等。
Exception类
Exception类继承了Throwable类,Throwable类提供了getMessage()方法用来获取详细信息,提供printStackTrace()方法打印调用栈路径。
下面这张图说明了我们上面提到了类的之间的关系,希望对你理解Java的异常体系有所帮助:
总结
这篇文章我们主要说了Java的异常体系,包括如何捕捉异常信息,以及异常体系的Throwable类、Exception类等等异常类,对应异常类的匹配,如果父类被捕捉了,子类的异常就不会捕捉了。
❤️ 感谢大家
如果你觉得这篇内容对你挺有有帮助的话:
- 欢迎关注我❤️,点赞????????,评论????,转发????
- 关注
盼盼小课堂
,定期为你推送好文,还有群聊不定期抽奖活动,可以畅所欲言,与大神们一起交流,一起学习。 - 有不当之处欢迎批评指正。