0

又抛异常了?可能你对Java的异常体系还没了解到位

 1 year ago
source link: https://blog.51cto.com/u_15460453/5817904
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Table of Contents

又抛异常了?可能你对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的异常体系还没了解到位_类继承

这篇文章我们主要说了Java的异常体系,包括如何捕捉异常信息,以及异常体系的Throwable类、Exception类等等异常类,对应异常类的匹配,如果父类被捕捉了,子类的异常就不会捕捉了。

❤️ 感谢大家

如果你觉得这篇内容对你挺有有帮助的话:

  1. 欢迎关注我❤️,点赞👍🏻,评论🤤,转发🙏
  2. 关注盼盼小课堂,定期为你推送好文,还有群聊不定期抽奖活动,可以畅所欲言,与大神们一起交流,一起学习。
  3. 有不当之处欢迎批评指正。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK