`
hbxflihua
  • 浏览: 676193 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Exception与Error的区别?

    博客分类:
  • java
阅读更多

Java语言在设计之初就提供了相对完善的异常处理机制,这种机制大大降低了编写和维护可靠程序的门槛,这也是Java得以大行其道的原因。

 

Exception与Error

Exception与Error都继承自Throwable类,在Java中只有Throwable类型的实例才可以被抛出(throw)或者捕获(catch)。Exception和Error体现了Java平台设计人员对不同异常情况的分类。

 

Error

Error是指正常情况下不大可能出现的情况,绝大部分的Error都会导致程序处于非正常的、不可恢复的状态。既然是非正常情况,所以不便于也不需要捕获,常见的如OutOfMemoryError等。

 

Exception

Exception是程序正常运行中可以预料的意外情况,可以被捕获并进行相应的处理。

Exception又分为检查(checked)异常和非检查(unchecked)异常。检查异常在源代码中必须显示的捕获,这是编译器检查的一部分。不检查异常就是所谓的运行时异常,类似NullPointerException、ArrayIndexOutOfBondsException之类,通常是可以编码避免的逻辑错误,可以根据需要来自行判断是否需要捕获,不会在编译期进行检查。

 

异常处理

在日常编程中如何处理好异常?可以从以下两个方面着手。

1、理解Throwable、Exception、Error的设计和分类。比如,掌握那些应用最广泛的子类,以及如何自定义异常等。

异常分类

问:NoClassDefFopndError和ClassNotFoundException有什么区别?

 

2、理解Java语言中操作Throwable的元素和实践。掌握基本语法是必须的,如Try-catch-finally块,throw、throws关键字等,异常处理代码比较繁琐,比如我们需要写很多千篇一律的捕获代码,或者在finally做一些资源回收的工作。随着Java语言的发展,引入了一些更加便利的特性,比如 try-with-resources和multiple catch等。

 

最佳实践

1、尽量不要捕获类似Exception这样通用的异常,而是应该捕获特定异常。除非深思熟虑,否则不要直接捕获Throwable或者Error。

 

2、不要生吞(swallow)异常。生吞异常很可能会导致非常难以诊断的诡异情况,不利于异常排查和问题跟踪。

 

 

  • 描述: 异常分类
  • 大小: 19.4 KB
分享到:
评论

相关推荐

    error与Exception的区别

    在编程世界中,错误处理是不可或缺的一部分,Java和许多其他编程语言中,"error"和"exception"这两个术语经常被提及。理解它们之间的区别对于编写健壮和可靠的代码至关重要。 首先,我们来看"error"。在Java中,`...

    第2讲 Exception和Error有什么区别1

    【Exception和Error的区别】 在Java编程中,Exception和Error都是基于`Throwable`类的子类,它们构成了Java异常处理机制的基础。理解两者的差异对于编写健壮的代码至关重要。 1. **Exception**: Exception是程序...

    Java中Error与Exception的区别.doc

    Java中Error与Exception的区别 Java 中的 Error 和 Exception 是两个不同的概念,它们都是 Throwable 的子类,但它们之间存在着许多不同之处。 首先, Error 类和 Exception 类都继承自 Throwable 类,这一点是...

    2Exception和Error有什么区别1

    Java 语言中的异常处理是其核心特性之一,它通过`Throwable`、`Exception`和`Error`类层次结构来组织和区分不同的错误情况。`Throwable`是所有异常和错误的基类,它分为两大类:`Exception`和`Error`。 `Exception`...

    捕获Throwable和捕获Exception的区别验证

    ### 捕获Throwable与捕获Exception的区别 在Java编程中,异常处理是确保程序健壮性和稳定性的重要机制之一。通常我们使用`try-catch`语句来处理可能发生的异常情况。而在Java中,所有异常类都继承自`Throwable`类,...

    Error类和Exception类剖析

    总的来说,理解Error和Exception的区别对于编写健壮的Java代码至关重要。正确地处理和区分这两类异常可以帮助我们及时识别和修复问题,提高程序的稳定性和可靠性。在编程实践中,应尽可能避免抛出Error,因为它们...

    java 面试常见问题整理

    Exception 和 Error 有什么区别? Checked Exception 和 Unchecked Exception 有什么区别? Throwable 类常用方法有哪些? try-catch-finally 如何使用? finally 中的代码一定会执行吗? 如何使用 try-with-...

    Java中Error和Exception的区别.pdf

    理解`Error`和`Exception`的区别对于编写健壮的Java代码至关重要。在实际编程中,应该尽量避免让程序抛出`Error`,因为这通常意味着系统层面的问题,而`Exception`则应当被适当地捕获和处理,以提高程序的稳定性和...

    php中error与exception的区别及应用

    error与exception的区别查阅网上资料大多是java的解释,貌似php的异常处理过程与java差不多 java中的Object继承结构如下: Object—->Throwable——–> Exception —-> RuntimeException | Error Error都是unchecked...

    Demo - Replace Error Code With Exception

    "Demo - Replace Error Code With Exception" 这个主题着重于将传统的错误码机制替换为异常处理机制,以提高代码的可读性、可维护性和异常处理的效率。 错误码通常是通过返回特定的整数值来指示函数或方法执行期间...

    运行时异常与一般异常的区别?

    "运行时异常与一般异常的区别" Running time 异常与一般异常是 Java 语言中两种不同的异常类型,它们之间有着本质的区别。 首先,让我们从父类说起。Error 和 Exception 都是 java.lang.Throwable 的子类。Error ...

    启动报错:验证加密狗无效 error:1001-mysql参数导致.docx

    在启动过程中出现了“验证产品加密狗无效:error:1001”的错误提示,该问题通常出现在V5系统启动时,并且与MySQL数据库参数配置有关。 #### 问题解决方法 为了解决这一问题,我们需要对可能的原因进行逐一排查,并...

    emqx-windows-exception.zip mqtt

    在本场景中,`emqx-windows-exception.zip` 是一个包含EMQ X Broker在Windows操作系统上的异常处理或特定版本的压缩包。 EMQ X Broker作为MQTT服务器,提供了以下关键功能和特性: 1. **高可用性**:支持集群模式...

    Windows Exception Handling

    基于编译器的SEH(通常与C++语言关联)引入了额外的帧结构,以支持更复杂的异常处理需求。这种处理方式允许在不同的代码块之间传递控制流,从而实现更精细的错误管理和资源清理。 #### 向量异常处理 向量异常处理...

    看完这篇Exception 和 Error,和面试官扯皮就没问题了

    与 `Exception` 不同,`Error` 一般不建议程序员直接处理,而是尽可能避免它们的发生。 在处理异常时,有以下几个关键的方法: - `getMessage()`:返回异常的详细信息字符串。 - `getLocalizedMessage()`:返回...

    exception C++ & More exception C++

    例如,`throw std::runtime_error("Error message");`会抛出一个运行时错误。 4. **异常捕获**:使用`try-catch`块可以捕获和处理异常。`try`块包含可能抛出异常的代码,而`catch`块则定义了如何处理这些异常。例如...

    exception 异常处理 exception

    Java中的异常体系主要分为两大类:`Error` 和 `Exception`。 - **Error**:通常表示系统级的错误,例如内存不足等,这类问题程序员通常无法避免,也不应该去处理。 - **Exception**:表示可以通过程序设计来避免或...

    Matlab COM之MWMCR::EvaluateFunction error问题解决

    4. **数据类型不匹配:** 输入参数类型与函数期望的类型不一致,例如函数期望的是向量或矩阵而非结构体。 #### 解决方案 1. **确认函数定义:** - 首先确保`sim`函数存在于Matlab的路径中。可以通过`which sim`...

    Struts中ActionError学习

    最后,我们来讨论一下ActionError与Exception Handling的关系。在Struts中,你可以定义全局的异常处理器(Global Exception Handler)来统一处理所有未捕获的异常。这可以通过在struts.xml中定义`<global-exception-...

Global site tag (gtag.js) - Google Analytics