异常处理业务

异常处理业务

Java 中的异常分为两种类型,分别是 Error 和 Exception。两种异常都是继承自 Throwable 类,但它们之间有很大的区别。

Error

Error 类型的异常表示由于 JVM 或底层系统出现了无法恢复的致命错误而引起的问题。这些异常通常不应被捕获,因为它们指示了明确的错误,而处理它们通常并不会使程序进入可预测的状态。常见的 Error 子类包括 OutOfMemoryError、StackOverflowError、NoSuchMethodError 等,这些异常在程序无法正常运行时抛出。

Exception

Exception 类型的异常则表示程序出现了某些可以预料的问题。这些异常通常可以被程序员捕获,并在程序中进行处理。通常情况下,异常信息应该写入到日志中以便于排查问题。常见的 Exception 子类包括 IOException、NullPointerException、ArrayIndexOutOfBoundsException 等等。

在实际编程中,应该尽量避免出现 Error 类型的异常,因为这意味着程序出现了很严重的问题。而对于 Exception 类型的异常,应该根据具体情况进行捕获和处理。通常,我们应该在代码中尽可能地避免出现异常,并且在出现异常时应该采取适当的处理措施,以免程序因为异常而崩溃或事故发生。

在 Exception 类型中,有两种常见的子类,分别是 Checked Exception 和 Unchecked Exception。

Checked Exception 是一种需要在代码中显式处理或声明抛出的异常,即在方法签名中通过 throws 关键字声明可能引发该类型异常。这种异常是编译期异常,表示编译期间可以通过处理或抛出使其不发生的异常,常见的 Checked Exception 子类包括 IOException、SQLException、NoSuchFieldException 等。

Unchecked Exception 则是一种不需要显式处理或声明的异常,在编译期间不会报错,但在运行期间可能发生。这种异常通常代表着程序员的编程错误或不可预见的错误,如空指针异常、数组越界异常、类型转换异常等等。

在编写程序时,应该充分考虑 Checked Exception 和 Unchecked Exception 的使用场景和适用范围。对于 Checked Exception,应该在方法签名中声明抛出,并在调用该方法的地方进行显式处理;而在遇到 Unchecked Exception 时,一般需要根据具体情况进行处理,可尝试进行捕获和处理,或者进行异常抛出。

Exception业务

Java 程序设计中的重要部分。异常的正确处理方式能够提高代码的健壮性,使程序更加稳定和可靠。异常处理还能够帮助我们排查修程序中的错误,从而提高程序的质量。

下面是 Java 异常的一些使用场景和具体应用示例:

  1. 文件读写:文件读写涉及文件系统、磁盘访问等底层操作,这些操作可能会引发 IOException 等 Checked Exception,需要在代码中进行捕获或声明抛出,以便于文件读写异常的处理和处理失败的情况。

  2. 数据库操作:数据库操作涉及网络通信、数据传输等底层操作,这些操作可能会引发 SQLException 等 Checked Exception,需要在代码中进行捕获或声明抛出,以便于数据库操作的异常处理和处理失败的情况。

  3. 网络编程:网络编程涉及网络通信、数据传输等底层操作,这些操作可能会引发 IOException 等 Checked Exception,需要在代码中进行捕获或声明抛出,以便于网络通信异常的处理和处理失败的情况。

  4. 用户输入验证:用户输入的数据可能会导致程序出现一些异常,如数字转换异常、空指针异常等,需要对用户输入的数据进行验证,以避免程序出现不可预测的异常。

  5. 并发编程:在并发编程中,可能会出现线程死锁、竞争条件等问题,这些问题可能会导致程序出现异常,需要通过加锁、同步等手段来避免并发问题引发的异常。

  6. 数组操作:数组越界异常是一种常见的 Unchecked Exception,需要在代码中对数组索引进行有效性检查,避免出现数组越界异常。

  7. 框架API使用:在使用第三方框架和库时,需要遵循它们的异常处理方式和规范,以避免程序出现一些不可预测的异常。

总之,在编写程序时,应该根据具体情况进行合理的异常处理,避免出现不可预测的异常和错误,提高程序的健壮性、稳定性和可维护性。

全局异常处理

结合spring + spring web MVC的使用特性,进行全局异常类的编写, 进行自定义异常捕捉和异常返回情况。

1
2
3
4
5
6
问题分析:每个模块的一场可能不一样- ---方案 : 通过继承自定全局异常处理的统一接口,实现每个模块的特俗异常处理

特殊:
方案1:对异常进行分类 ---需要要求设计时进行统一异常的抽象处理,按照不同种类的异常出现情况拆分不同的异常处理接口类,并给出默认实现
方案2:只定义一个异常类 ---一个抽象,一个默认实现,子类实现统一接口实现统一异常处理
(具体情况具体分析)

异常处理业务
http://example.com/2023/06/01/业务/异常处理业务/
作者
where
发布于
2023年6月1日
许可协议