Error和Exception的区别(异常相关一)

异常:是在运行时期发生的不正常情况。
在java中用类的形式对不正常情况进行了描述和封装对象。描述不正常的情况的类,就称为异常类。以前正常流程代码和问题处理代码相结合,现在将正常流程代码和问题处理代码分离。提高阅读性.其实异常就是java通过面向对象的思想将问题封装成了对象.用异常类对其进行描述。不同的问题用不同的类进行具体的描述。 比如角标越界。空指针等等。问题很多,意味着描述的类也很多,将其共性进行向上抽取,形成了异常体系。最终问题(不正常情况)就分成了两大类。

Error和Exception
1,一般不可处理的。Error
            特点:是由jvm抛出的严重性的问题。
                 这种问题发生一般不针对性处理。直接修改程序
 2,可以处理的。Exception
该体系的特点:
    子类的后缀名都是用其父类名作为后缀,阅读性很想。

### 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()); } ``` 上述代码片段展示了如何手动触发并捕捉到之前定义好的自定义异常实例。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值