logo头像

学如逆水行舟,不进则退!!!

文章目录

为什么java的exception需要分类

本文于363天之前发表,文中内容可能已经过时。

前言

  • java中有异常抛出、既然是异常为什么还要分那么多种情况

image-20210514105417282

问题描述

  • 我的程序无缘无故会既不报错也不执行。不知所踪
public static void main(String[] args) throws InterruptedException {
    String msg = "nihao";
    try {
        helloOne(msg);
    } catch (Exception e) {
    }
    System.out.println("大家好");
}

private static void helloOne(String msg) {
    String substring = String.valueOf(msg.charAt(5));
    System.out.println("nihao:"+substring);
}
  • 关于Exception处理的问题,笔者是轻身经历过的因为自己乱用异常并且乱捕获导致自己程序变得神出鬼没。但是涉及到核心业务代码这里无法贴出代码。上面是自己的一个演示代码
  • 当在主程序中调用其他方法时。刚开始担心别人的方法不稳定所以加上的异常。这样是为了保证自己的业务不会因此奔溃。但是不知道当时咋想的在catch里面没有加上日志。这里化个重点凡是捕获的异常必须要加上处理最起码需要日志

问题解决

  • 虽然异常处理是个小问题但是也是对原理的不了解导致的。或者说是不规范导致的,捕获了异常却不做任何处理这本身就是一种不规范。
  • 有关异常处理还有一种情况是在捕获的时候需要先捕获小异常然后再大异常
public static void main(String[] args) throws InterruptedException {
    String msg = "nihao";
    try {
        helloOne(msg);
    } catch (Exception e) {
        System.out.println("eeee");
    } catch (NullPointerException e) {
        System.out.println("null");
        e.printStackTrace();
    }
    System.out.println("大家好");
}
  • 上面这段代码在编译期间就无法通过。因为先捕获了大异常这样就会造成小异常永远捕获不到。这样就会失去捕获的意义。

总结

什么是异常

  • 异常是指在程序执行期间有些事无法通过实现代码层面上做出的判断。依赖于数据产生的可能情况

分类

  • Throwable是异常的父类,所有的异常都是从这里衍生来的。其下有两个主力Exception+Error

  • error 是编译期间就能发现的问题。是JVM在处理的事情

异常名称 作用
NullPointerException 空指针异常
ClassCastException class转换异常
IndexOutOfBoundsException 数组越界异常
IllegalArgumentException 参数不合法异常
ArrayStoreException 数组异常

处理异常

  • 上面我在演示中是通过trycatch 实现异常的捕获的。但是正确的姿势应该是try+catch+finally 三者完成异常捕获并保证备胎 操作的执行

点赞啊。别忘记了

上一篇
坚持原创技术分享,您的支持将鼓励我继续创作!

评论系统未开启,无法评论!