【java】异常与错误

Throwable包括Error和Expected。

Error

Error错误是程序无法处理的,由JVM产生并抛出的。

举例:StackOverflowError \ ThreadDeath

Expected

Expected异常包括两类,即受检异常 (非运行时异常)和非受检异常(运行时异常),异常往往是由程序的逻辑错误引起的。异常可以由程序自行处理。

受检异常:在编辑器中可以检测到,无需运行。

举例:ClassNotFoundException

非受检异常:运行后才可以检测到的异常。

举例:ArrayIndexOutOfBoundsException \ 空指针

程序处理异常的方式
① try - catch - finally

原本的程序设计是:一旦出现异常,那么将不再向下执行程序。

但是如果提前将可能出现异常的程序用try - catch包裹,那么程序即使出现问题也会继续向下执行。finally是不管上边正确还是错误,都会执行的程序。

java 复制代码
public class Main {
    public static void main(String[] args) {
        int[] arr = new int[5];
        try {
            System.out.println("----------这是一条语句----------");
            arr[5] =  1;
            System.out.println("这条语句不会执行");
        } catch (Exception e){
            System.out.println("出现异常了");
        } finally {
            System.out.println("不管是否出现异常都会执行");
        }
    }
}

运行结果

② 抛出

抛出是让程序的调用程序处理异常,这并不能解决问题,只是指出了问题所在。

java 复制代码
public class Main {
    public static void main(String[] args) {
        try {
            run();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        System.out.println("try-catch虽然报错,但仍然可以运行");
    }
    public static void run() throws ClassNotFoundException {
        fly();
    }
    public static void fly() throws ClassNotFoundException {
        Class.forName("MainX");
    }
}

报错但存在输出

java 复制代码
public class Main {
    public static void main(String[] args) throws ClassNotFoundException {
        run();
        System.out.println("仅报错,并不能输出");
    }
    public static void run() throws ClassNotFoundException {
        fly();
    }
    public static void fly() throws ClassNotFoundException {
        Class.forName("MainX");
    }
}

报错且不存在输出

相关推荐
luv_sw2 分钟前
JavaSE-面向对象-抽象类和接口
java
TracyCoder12311 分钟前
MySQL 实战宝典(八):Java后端MySQL分库分表工具解析与选型秘籍
java·开发语言·mysql
非凡的世界12 分钟前
为什么我和越来越多的PHP程序员,选择了 Webman ?
开发语言·php·workman·webman
wasp52025 分钟前
做了技术管理后,我发现技术和管理其实可以兼得
java·运维·网络
MarkHD26 分钟前
车辆TBOX科普 第45次
java·开发语言
还债大湿兄36 分钟前
阿里通义千问调用图像大模型生成轮动漫风格 python调用
开发语言·前端·python
okseekw37 分钟前
字面量的初步认识
java
鸭子程序员1 小时前
c++ 算法
开发语言·c++·算法
搬砖ing换来金砖1 小时前
Python入门-Task02
开发语言·python
雨中散步撒哈拉1 小时前
17、做中学 | 初三下期 Golang文件操作
开发语言·后端·golang