【Java】异常

发布时间:2024年01月04日

1. 异常的产生和分类

在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。

异常机制其实是帮助我们找到程序中的问题,异常的根类是java.lang.Throwable,其下有两个子类:java.lang.Errorjava.lang.Exception,平常所说的异常指java.lang.Exception

Throwable体系:

  • Error:严重错误Error,无法通过处理的错误,只能事先避免。
  • Exception:表示异常,异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的。
    • RuntimeException:运行时异常,编译阶段不出现异常提醒,运行时出现的异常。(如数组索引越界)
    • 编译时异常。(如日期解析异常)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2. 捕获异常

如果try 中可能遇到多个问题,要写多个 catch 与之对应。如果要捕获多个异常,且异常中存在父子关系,那么父类一定要写在下面。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

也可以同时捕获多个异常:

catch(ArrayIndexOutOfBoundsException | ArithmeticException){}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3. 抛出异常 throw 和声明异常 throws

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

关键字throws运用于方法声明之上,用于表示当前方法不处理异常,而是提醒该方法的调用者来处理异常(抛出异常).

public class ThrowsDemo {
    public static void main(String[] args) throws FileNotFoundException {
        read("a.txt");
    }

    // 如果定义功能时有问题发生需要报告给调用者。可以通过在方法上使用throws关键字进行声明
    public static void read(String path) throws FileNotFoundException {
        if (!path.equals("a.txt")) {//如果不是 a.txt这个文件 
            // 我假设  如果不是 a.txt 认为 该文件不存在 是一个错误 也就是异常  throw
            throw new FileNotFoundException("文件不存在");
        }
    }
}

4. finally

try…catch…finally:需要处理异常,finally里面代码必须执行。

注意:finally不能单独使用。

public class TryCatchDemo4 {
    public static void main(String[] args) {
        try {
            read("a.txt");
        } catch (FileNotFoundException e) {
            //抓取到的是编译期异常  抛出去的是运行期 
            throw new RuntimeException(e);
        } finally {
            System.out.println("不管程序怎样,这里都将会被执行。");
        }
        System.out.println("over");
    }
    /*
     *
     * 我们 当前的这个方法中 有异常  有编译期异常
     */
    public static void read(String path) throws FileNotFoundException {
        if (!path.equals("a.txt")) {//如果不是 a.txt这个文件 
            // 我假设  如果不是 a.txt 认为 该文件不存在 是一个错误 也就是异常  throw
            throw new FileNotFoundException("文件不存在");
        }
    }
}
文章来源:https://blog.csdn.net/XiugongHao/article/details/135397259
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。