【Java】常见Error以及Exception

本文深入解析Java中的异常处理机制,详细介绍了RuntimeException包括NullPointerException、ClassCastException、IllegalArgumentException、IndexOutOfBoundsException、NumberFormatException等,以及非RuntimeException如ClassNotFoundException和IOException。同时,还探讨了Error类型的异常,如NoClassDefFoundError、StackOverflowError和OutOfMemoryError。

RuntimeException

1.NullPointerException - 空指针引用异常

2.ClassCastException - 类型强制转换异常

3.IllegalArgumentException - 传递非法参数异常

4.IndexOutOfBoundsException - 下标越界异常

5.NumberFormatException - 数字格式异常

 

非RuntimeException

1.ClassNotFoundException - 找不到指定class的异常

2.IOException - IO操作异常

 

Error

1.NoClassDefFoundError - 找不到class定义的异常

2.StackOverflowerError - 深递归导致栈被耗尽而抛出的异常

3.OutOfMemoryError - 内存溢出异常

### Java 中自定义异常的概念 在 Java 编程中,当内置的异常类无法满足特定需求时,可以通过继承 `Exception` 或 `RuntimeException` 来创建自定义异常类[^2]。通常情况下,自定义异常需要提供两个构造方法:一个是无参数的构造方法,另一个是带有异常信息字符串的构造方法。 以下是实现自定义异常的一个简单例子: ```java // 定义一个自定义异常类 public class MyCustomException extends Exception { // 无参构造方法 public MyCustomException() { super(); } // 带有异常信息的构造方法 public MyCustomException(String message) { super(message); } } ``` 通过这种方式,开发者可以根据业务逻辑的需求抛出自定义异常并对其进行处理[^1]。 --- ### Error Exception 的区别及用法 #### 1. **Error** `Error` 是指 JVM(Java 虚拟机)运行过程中发生的严重问题,通常是不可恢复的情况。这些问题超出了应用程序的控制范围,因此一般不需要也不应该被捕获或处理。常见的 `Error` 类型包括但不限于以下几种: - `OutOfMemoryError`: 表示内存不足。 - `StackOverflowError`: 表示堆栈溢出。 由于这些错误是由外部环境引起的,并且几乎不可能由程序修复,所以在设计应用时很少考虑捕获它们[^3]。 #### 2. **Exception** `Exception` 则表示程序执行期间可能出现的各种意外情况,这类问题是可以通过编写代码来预防或者解决的。根据是否强制要求处理,`Exception` 可分为两大类: - **Checked (受检) Exceptions**: 这些异常必须显式声明 (`throws`) 并在其调用处进行处理(要么捕获,要么继续向上抛)。例如 `IOException`, `SQLException` 等都属于此类。 - **Unchecked (非受检) Exceptions**: 即运行时异常(`RuntimeException`)及其子类,比如 `NullPointerException`, `ArrayIndexOutOfBoundsException` 等。对于这种类型的异常,编译器不会强迫开发人员去处理,但如果发生则可能导致程序崩溃[^4]。 下面是一个简单的对比表: | 特性 | Error | Checked Exception | Unchecked Exception | |-----------------|--------------------------------|----------------------------------|--------------------------------| | 继承关系 | java.lang.Throwable | java.lang.Exception | java.lang.RuntimeException | | 是否可恢复 | 不可恢复 | 大多可通过修改输入等方式恢复 | 部分可能恢复 | | 使用场景 | 系统级致命错误 | 方法间传递数据失败等情况 | 编码失误引起的小概率事件 | --- ### 总结 综上所述,在实际开发工作中合理运用自定义异常能够显著提高系统的健壮性用户体验;而理解清楚 `Error` `Exception` 的差异有助于更精准地定位问题根源以及采取恰当措施应对不同种类的问题^. ```java try{ throw new MyCustomException("This is a custom exception."); }catch(MyCustomException e){ System.out.println(e.getMessage()); } ``` 上述代码片段展示了如何手动触发并捕捉到之前定义好的自定义异常实例。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值