【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");
    }
}

报错且不存在输出

相关推荐
毕设源码-郭学长36 分钟前
【开题答辩全过程】以 基于SpringBoot技术的美妆销售系统为例,包含答辩的问题和答案
java·spring boot·后端
故事不长丨36 分钟前
C#正则表达式完全攻略:从基础到实战的全场景应用指南
开发语言·正则表达式·c#·regex
梨落秋霜41 分钟前
Python入门篇【文件处理】
android·java·python
Java 码农1 小时前
RabbitMQ集群部署方案及配置指南03
java·python·rabbitmq
哈库纳玛塔塔1 小时前
放弃 MyBatis,拥抱新一代 Java 数据访问库
java·开发语言·数据库·mybatis·orm·dbvisitor
phltxy2 小时前
从零入门JavaScript:基础语法全解析
开发语言·javascript
S***q3772 小时前
Spring Boot管理用户数据
java·spring boot·后端
天“码”行空2 小时前
java面向对象的三大特性之一多态
java·开发语言·jvm
毕设源码-郭学长2 小时前
【开题答辩全过程】以 基于SpringBoot框架的民俗文化交流与交易平台的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
好大哥呀3 小时前
Java Web的学习路径
java·前端·学习