java运行时异常和非运行时异常的区别

建议使用运行时异常和编译时异常叫法,便于区分和理解(非运行时异常是什么异常?很懵逼)
编译时异常:程序没有通过编译器的编译,必须处理掉这个异常程序才能正常运行,比如文件路径找不到异常,类找不到异常,IO异常,必须用try…catch或是throwable处理掉才能编译通过;可以理解为一种特殊的语法错误,是一种预处理机制。
运行时异常:程序运行完在控制台中输出的异常(注意此时也有可能打印出编译时异常,如果你在程序中让其打印出的话,你如果不让其打印则打印不出;运行时异常不会受此限制),比如空指针异常,数组越界异常
PS:控制台打印出编译时异常,程序依然往后执行;出现运行时异常程序就崩了,不再往下执行。

Java 中,异常主要分为运行异常(RuntimeException 及其子类)运行异常(也称为检查型异常,Checked Exception)。它们的区别主要体现在以下几个方面: ### 编译器处理要求 - 运行异常属于受检异常Java 编译器不要求方法必须声明抛出可能发生的运行异常,也不强制使用 `try-catch` 块捕获未被捕获的运行异常。例如: ```java public class RuntimeExceptionExample { public static void main(String[] args) { String str = null; // 这里可能会抛出 NullPointerException,但编译器不强制处理 System.out.println(str.length()); } } ``` - 运行异常是受检异常,编译器要求方法必须声明抛出可能发生的运行异常,或者使用 `try-catch` 块捕获处理。例如: ```java import java.io.FileReader; import java.io.IOException; public class CheckedExceptionExample { public static void main(String[] args) { try { FileReader fr = new FileReader("nonexistent.txt"); } catch (IOException e) { System.out.println("处理文件读取异常: " + e.getMessage()); } } } ``` ### 代表的错误性质 - 运行异常一般是由程序逻辑错误引起的,如 `NullPointerException`、`IndexOutOfBoundsException` 等。程序应该从逻辑角度尽可能避免这类异常的发生。例如,在使用对象之前先检查是否为 `null`,访问数组元素确保索引在有效范围内。 ```java public class AvoidRuntimeException { public static void main(String[] args) { String str = null; if (str != null) { System.out.println(str.length()); } } } ``` - 运行异常通常代表程序外部的一些不可控因素导致的异常,如文件不存在、网络连接失败等。这些异常是程序在正常运行过程中可能会遇到的,但需要进行特殊处理。 ### 处理方式的选择 - 对于运行异常,程序中可以选择捕获处理,也可以不处理。虽然不强制捕获,但在某些情况下,为了增强程序的健壮性,可以捕获运行异常并进行相应的处理。 ```java public class CatchRuntimeException { public static void main(String[] args) { String str = null; try { System.out.println(str.length()); } catch (NullPointerException e) { System.out.println("捕获到空指针异常: " + e.getMessage()); } } } ``` - 运行异常必须进行处理,要么在方法签名中使用 `throws` 关键字声明抛出,要么使用 `try-catch` 块捕获处理,否则程序无法通过编译。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值