异常处理业务
异常处理业务
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 异常的一些使用场景和具体应用示例:
文件读写:文件读写涉及文件系统、磁盘访问等底层操作,这些操作可能会引发 IOException 等 Checked Exception,需要在代码中进行捕获或声明抛出,以便于文件读写异常的处理和处理失败的情况。
数据库操作:数据库操作涉及网络通信、数据传输等底层操作,这些操作可能会引发 SQLException 等 Checked Exception,需要在代码中进行捕获或声明抛出,以便于数据库操作的异常处理和处理失败的情况。
网络编程:网络编程涉及网络通信、数据传输等底层操作,这些操作可能会引发 IOException 等 Checked Exception,需要在代码中进行捕获或声明抛出,以便于网络通信异常的处理和处理失败的情况。
用户输入验证:用户输入的数据可能会导致程序出现一些异常,如数字转换异常、空指针异常等,需要对用户输入的数据进行验证,以避免程序出现不可预测的异常。
并发编程:在并发编程中,可能会出现线程死锁、竞争条件等问题,这些问题可能会导致程序出现异常,需要通过加锁、同步等手段来避免并发问题引发的异常。
数组操作:数组越界异常是一种常见的 Unchecked Exception,需要在代码中对数组索引进行有效性检查,避免出现数组越界异常。
框架API使用:在使用第三方框架和库时,需要遵循它们的异常处理方式和规范,以避免程序出现一些不可预测的异常。
总之,在编写程序时,应该根据具体情况进行合理的异常处理,避免出现不可预测的异常和错误,提高程序的健壮性、稳定性和可维护性。
全局异常处理
结合spring + spring web MVC的使用特性,进行全局异常类的编写, 进行自定义异常捕捉和异常返回情况。
1 |
|