运行时异常与受检异常有何异同?

简介: 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就不会发生。受检异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发。

异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就不会发生。受检异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发。Java编译器要求方法必须声明抛出可能发生的受检异常,但是并不要求必须声明抛出未被捕获的运行时异常。异常和继承一样,是面向对象程序设计中经常被滥用的东西,在Effective Java中对异常的使用给出了以下指导原则:

  • 不要将异常处理用于正常的控制流(设计良好的API不应该强迫它的调用者为了正常的控制流而使用异常)
  • 对可以恢复的情况使用受检异常,对编程错误使用运行时异常
  • 避免不必要的使用受检异常(可以通过一些状态检测手段来避免异常的发生)
  • 优先使用标准的异常
  • 每个方法抛出的异常都要有文档
  • 保持异常的原子性
  • 不要在catch中忽略掉捕获到的异常
目录
相关文章
|
2月前
|
Java 程序员
关于java异常
关于java异常
24 5
|
2月前
|
安全 Java 编译器
Java异常
Java异常——Exception
24 0
|
4月前
|
Java 编译器 数据库连接
|
5月前
|
C++
C++ 异常机制问题之捕获异常的问题如何解决
C++ 异常机制问题之捕获异常的问题如何解决
|
6月前
|
Java 程序员 数据库连接
处理Java异常
处理Java异常
39 4
|
7月前
|
Java 开发者
Java中的受检异常和非受检异常的区别
Java中的受检异常和非受检异常的区别
|
7月前
|
Java 程序员 数据库
初识Java异常
初识Java异常
|
7月前
|
Java
Java异常的抛出
Java异常的抛出
31 0
|
7月前
|
Java 数据库连接
Java异常捕获与处理
Java异常捕获与处理
32 0
|
7月前
|
存储 Java 编译器
Java异常到底是个啥——一次异常引发的思考
这篇文章主要通过三个部分阐释Java异常 - Java中异常的分类,异常的处理机制 - 异常的处理规范和实战,如何利用Springboot框架处理异常 - 从JVM的角度分析异常机制,包括`try-catch`, `try-finally`, `try-with-resource`的字节码分析
55 0
Java异常到底是个啥——一次异常引发的思考