Mar*_*ung 162 java exception throwable
我正在尝试更多地了解基本Java和不同类型的Throwables,有人能告诉我异常和错误之间的区别吗?
Edd*_*die 170
不应该捕获或处理错误(除了最罕见的情况).例外是异常处理的基础.该Javadoc中解释说得好:
Error是Throwable的子类,表示合理的应用程序不应该尝试捕获的严重问题.大多数此类错误都是异常情况.
查看一些子类Error,获取他们的一些JavaDoc注释:
AnnotationFormatError - 当注释解析器尝试从类文件中读取注释并确定注释格式错误时抛出.AssertionError - 抛出表示断言失败.LinkageError -  LinkageError的子类表明一个类对另一个类有一些依赖性; 然而,后一类在前一类的编译后发生了不相同的变化.VirtualMachineError - 抛出此异常表示Java虚拟机已损坏或已耗尽其继续运行所需的资源. 实际上有三个重要的子类别Throwable:
Error - 出现严重错误的大多数应用程序应该崩溃而不是试图解决问题,RuntimeException) - 通常是编程错误,例如NullPointerException非法参数.应用程序有时可以处理或从此Throwable类别中恢复- 或者至少使用Thread的run()方法捕获它,记录投诉并继续运行.FileNotFoundException和TimeoutException...ava*_*sen 32
这张幻灯片显示了@ georgios-gousios的Java异常层次结构,简要地解释了Java中的错误和异常之间的区别.
Rob*_*bin 17
如您所知,错误往往表示您的应用程序已结束.它通常无法从中恢复,并且应该导致VM退出.除了在退出之前可能记录或显示和适当的消息之外,不应该捕获它们.
示例:OutOfMemoryError - 由于程序无法再运行,因此无法执行任何操作.
例外通常是可以恢复的,即使没有,它们通常只是意味着尝试的操作失败,但您的程序仍然可以继续.
示例:IllegalArgumentException - 将无效数据传递给方法,以便方法调用失败,但不会影响将来的操作.
这些都是简单的例子,仅有例外情况就有另外丰富的信息.
错误 -
Errorjava中的s是type java.lang.Error。Error在运行时发生。它们不会为编译器所知。    Errors主要是由运行应用程序的环境引起的。  java.lang.StackOverflowError,java.lang.OutOfMemoryError例外 -
Exceptionjava中的s是type java.lang.Exception。Exception包括选中和未选中的类型。try-catch块处理异常来从异常中恢复。Exceptions主要是由应用程序本身引起的。SQLException,IOException ArrayIndexOutOfBoundException,ClassCastException,NullPointerException进一步阅读:http : //javaconceptoftheday.com/difference-between-error-vs-exception-in-java/

该类的描述Error非常清楚:
An
Error是其子类Throwable,表示合理的应用程序不应尝试捕获的严重问题。大多数此类错误都是异常情况。该ThreadDeath错误虽然是“正常”情况,但也是 的一个子类,Error因为大多数应用程序不应尝试捕获它。方法不需要在其 throws 子句中声明
Error在方法执行期间可能抛出但未被捕获的任何子类,因为这些错误是永远不应该发生的异常情况。
引用自 Java 自己的类文档Error。
简而言之,Error除非您有充分的理由,否则您不应该捕获 s。(例如,如果 servlet 内存不足或类似情况,防止 Web 服务器的实现崩溃。)
Exception另一方面,与任何其他现代语言一样,An只是一个正常的例外。您可以在 Java API 文档或任何在线或离线资源中找到详细说明。
| 归档时间: | 
 | 
| 查看次数: | 83409 次 | 
| 最近记录: |