RuntimeException和非RuntimeException

本文介绍了Java中非检查型异常的基本概念,并列举了常见的几种RuntimeException类型,包括ClassCastException、NullPointerException、ArrayIndexOutOfBoundsException、IllegalArgumentException及NumberFormatException。

在java的异常类体系中,Error和RuntimeException是非检查型异常,其他的都是检查型异常。


所有方法都可以在不声明throws的情况下抛出RuntimeException及其子类

不可以在不声明的情况下抛出非RuntimeException

简单的说,非RuntimeException要自己写catch块处理掉。

 

常见的RuntimeException:

 

ClassCastException

NullPointerException 

ArrayIndexOutOfBoundsException

IllegalArgumentException

NumberFormatException

Java中,`RuntimeException` `Exception` 是两个密切相关的异常类,它们都继承自 `Throwable` 类,但在使用行为上有显著区别。 `Exception` 是所有检查型异常(checked exceptions)的父类,表示程序可以处理的异常情况。当方法可能会抛出此类异常时,必须在方法声明中使用 `throws` 关键字显式声明,调用者也必须通过 `try-catch` 块捕获处理或者继续抛出。这种设计迫使程序员处理或声明这些异常,以确保程序的健壮性可靠性。例如,`IOException` `SQLException` 都属于这一类别 [^2]。 相比之下,`RuntimeException` 是非检查型异常(unchecked exceptions)的一部分,它继承自 `Exception` 类。此类异常通常是由程序逻辑错误引起的,如 `NullPointerException` 或 `IndexOutOfBoundsException`,它们在编译时不会被检测到,因此不需要在方法声明中声明,也不需要在调用时被捕获。这意味着如果不对这些异常进行处理,它们可能导致程序突然终止。尽管如此,最佳实践建议即使对于 `RuntimeException` 及其子类,也应该尽可能使用异常处理机制来捕获处理它们,以防止程序中断并提高程序的健壮性 [^1]。 关于用法,当需要创建自定义异常时,如果希望该异常不需要在方法签名中声明也不需要强制捕获,可以选择继承 `RuntimeException`。相反,如果希望强制要求调用者处理异常,则应该继承 `Exception` 类 [^3]。 ### 用法示例 对于 `RuntimeException` 的使用,可以如下所示: ```java public class MyRuntimeException extends RuntimeException { public MyRuntimeException(String message) { super(message); } } // 使用自定义的RuntimeException public void someMethod() { if (someCondition()) { throw new MyRuntimeException("Something went wrong"); } } ``` 而对于 `Exception` 的使用,则需要如下方式: ```java public class MyCheckedException extends Exception { public MyCheckedException(String message) { super(message); } } // 使用自定义的Exception public void someMethod() throws MyCheckedException { if (someCondition()) { throw new MyCheckedException("Something went wrong"); } } ``` 在实际开发中,选择合适的异常类型取决于具体的应用场景以及是否希望强制调用者处理异常。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值