Java Exception和Error的区别

Java 中 Exception 和 Error 有什么区别? ![[Throwable.png]] 和 都是 类的子类(在 Java 代码中只有继承了 Throwable 类的实例才可以被 throw 或者被 catch)它们表示在程序运行时发生的异常或错误情况。总结来看: 表示可以被处理的程序异常, 表示系统级的不可恢复错误。详细说明:1)Exception:是程序中可以处理的异常情况,表示程序逻辑或外部环境中的问题,可以通过代码进行恢复或处理。常见子类有:、、、 等。 又分为 Checked Exception(编译期异常)和 Unchecked Except 阅读详情

Java中异常的抽象类是Throwable,在此基础上,派生出两大类:Error和Exception。

Error是程序中的严重错误,不应该用try…catch包括。Javadoc的说明如下:

An Error is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch. Most such errors are abnormal conditions.

常见的Error有:AssertionError、OutOfMemoryError、StackOverflowError。

Exception分两类:Checked Exception和Unchecked Exception。
Unchecked Exception的基类是RuntimeException,所有继承自RuntimeException的Exception都属于Unchecked Exception, 如:NullPointerException、ArrayIndexOutOfBoundsException。
Checked Exception直接继承自Exception,所有不继承RuntimeException的Exception都属于Checked Exception,如:FileNotFoundException。
这里写图片描述

Checked Exception和Unchecked Exception都可以用try…catch包含。其中,Checked Exception在编译时检查是否有想要的catch处理,因此必要有try…catch包含,或者方法签名处抛出相应的异常。而Unchecked Exception在运行时判断,所以不一定要try…catch包含。而且,Unchecked Exception往往是程序本身存在bug,一般不catch这样的错误。

备注1:
在try中执行return语句,依然会执行finally语句块,除非在try语句中结束JVM进程(system.exit(0))

public class Hello{
    public static void main(String[] args){
        try{
            System.out.println("in try");
            return;
        }catch(Exception e){

        }finally{
            System.out.println("finally");
        }
        System.out.println("end");
    }
}
//输出
in try
finally

备注2:
不要在finally语句块调用return,否则的话,在try语句块中抛出的异常无法被调用者捕获,如下:

    try {
      doSomething();
      System.out.println("No Exception Caught!");
    } catch (RuntimeException e) {
      System.out.println("got it.");
    }
  }

  public static void doSomething() {
    try {
      throw new RuntimeException();
    } finally {
      return;
    }
  }
//输出
No Exception Caught!

备注3:
throw与throws的区别:
throw是在语句块,程序员主动抛出一个异常。
throws是在方法的签名处,说明该方法可能抛出的异常。当有多个异常抛出时,用逗号分隔。

备注4:
从JDK7开始,同一个try对应的多个catch可以写在一起。

3、Java中 Exception 和 Error 有什么区别 特性ExceptionError继承关系继承自Throwable继承自Throwable可恢复性可以通过代码捕获并处理不可以处理,通常表示不可恢复的错误处理方式可以通过try-catch或throws处理不建议捕获或处理常见情况程序中可能发生的异常情况JVM 或系统级别的严重问题Exception是程序能处理的异常,程序可以捕获并进行恢复。Error是系统级别的错误,程序无法恢复,应避免捕获它们。 阅读详情

相关推荐

Linux下OpenFire+Spark即时通讯环境搭建全攻略(含证书错误解决方案)

本文提供了一份详尽的Linux环境下OpenFire服务器与Spark客户端即时通讯系统的搭建与配置全攻略。内容涵盖从环境规划、服务端部署、数据库配置到客户端连接的全流程,并重点解决了Spark连接时常见的证书验证错误问题,为企业构建私有化、高可用的XMPP通讯平台提供了实战指导。

weixin_29251131的博客 166

java异常基础知识

一、异常 异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。 Java通 过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的 错误条件。当条件生成时,错误将引发异常。  二、 Java异常类层次结构图

always14的博客 742

手把手教你用srec_cat生成带CRC校验的STM32固件(解决OTA常见校验失败问题)

本文针对STM32 OTA升级中常见的固件校验失败问题,提供了一套使用srec_cat工具自动生成带CRC32校验固件的实战解决方案。文章详细拆解了命令参数,指导开发者如何为固件嵌入CRC值、处理地址偏移及合并文件,从而确保Bootloader能可靠校验固件完整性,提升远程更新的稳定性。

kappa的博客 783

2020-11-08

Java:详解Java中的异常(Error与Exception) 置顶王小二(IT)2018-06-22 16:54:2666242收藏389 分类专栏:编程语言(Java基础)文章标签:trycatchfinallyError 版权 《Java:详解Java中的异常(Error与Exception)》 《Java:简述Java中的自定义异常》 《Java:简述throw-throws异常抛出》 《Java:简述try-catch-finally异常捕获》 《J...

weixin_39743450的博客 1045

从零到一:STM32CubeMX虚拟串口开发中的常见陷阱与优化策略

本文深入探讨了STM32CubeMX在USB虚拟串口开发中的常见问题与优化策略,涵盖数据流吞吐量瓶颈、实时性约束等核心挑战。通过实战案例和代码示例,详细解析了波特率同步异常、数据丢失等问题的解决方案,并提供了DMA配置和中断优先级调优的高级技巧,帮助开发者提升STM32虚拟串口的性能和可靠性。

weixin_29164185的博客 370

Starlink第三代终端和第二代终端的差异性有哪些?

starlink第三代终端和第二代终端的额差异

chen2jiang3的博客 2929

Java中的Exception和Error:深入理解异常处理

在某些情况下,你可能需要创建自己的异常类型。这可以通过继承现有的异常类来实现。自定义异常可以让你的代码更加清晰和易于维护。Exception:程序自身导致的异常,是可预料到的异常,比如io异常、空指针异常等,可以通过catch来进行捕获处理,通常遇到这种错误,应对其进行处理,使应用程序可以继续正常运行。Error:是虚拟机生成并抛出的,如内存不足、虚拟机错误、堆栈溢出等,超出了程序员可处理的范围。二者都继承于Throwable;Exception通常表示程序可以处理的异常情况,且需要进行捕获和处理;

apple_64847327的博客 1573

ROS智能车定位导航仿真+功能包自带的地图实现+自己建立的地图实现

ROS智能车定位导航仿真一、前言二、效果图三、准备工作[1.在Ubuntu上安装ROS Kinetic](https://blog.youkuaiyun.com/qq_42585108/article/details/104327661)2.创建ROS工作区间①1创建racecar_ws和src文件夹②初始化工作空间③下载racecar源代码包,并编译工程四、启动仿真1.设置环境变量2.启动地图五、建图1.启动slam和rviz2 控制车辆(左侧有个控制窗口),WASD控制前左后右的运动就可以建图了:3.新建终端保存地

qq_42585108的博客 1万+

(九)Java关于异常处理(Error和Exception)详解

Java关于异常处理详解

SwaggerHB的博客 1531

Verilator+VSCode实战:5分钟搞定Verilog语法检查与波形调试

本文详细介绍了如何将Verilator仿真器与VSCode编辑器高效集成,打造极速的Verilog开发工作流。通过环境配置、实时语法检查、一键仿真与波形生成等实战技巧,帮助IC设计工程师在几分钟内完成从代码编写到波形调试的全过程,大幅提升中小规模模块的验证效率。

weixin_28454475的博客 470

Kafka 性能优化与常见问题排查

Kafka 的高性能依赖于合理的集群设计、参数优化与高效的监控体系。生产环境中,应重点关注I/O 瓶颈、分区规划、Producer/Consumer 参数调优,并通过监控与排查手段快速定位问题,从而保障 Kafka 在实时场景下的稳定运行。

X2829352498的博客 235

Java 基础-Error和Exception

这里主要是介绍 Java 中的Error和Exception,它们的共同点和不同点。

汪了吧的博客 1379

手把手教你学基带SOC芯片(4.2)--基带soc芯片的存储器设计

基带 SoC 中的存储器设计需要综合考虑功耗、成本和性能等因素。SRAM 适合高速缓存,DRAM 适合主内存,Flash 存储器适合非易失性存储。通过优化存储单元设计、阵列布局和外围电路,可以提高存储器的性能和效率。

MHD0815的博客 350

Java异常Error和Exception的区别

异常发生的原因有很多,通常包含以下几大类: 用户输入了非法数据。 要打开的文件不存在。 网络通信时连接中断,或者JVM内存溢出。 这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。-要理解Java异常处理是如何工作的,你需要掌握以下三种类型的异常: 检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个

iblade的博客 5万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java中Error与Exception的区别

当我们谈论编程中的错误(Error)和异常(Exception)时,通常会涉及到程序执行中可能出现的问题和如何处理这些问题的策略。本文将详细讨论这两者的区别和如何在代码中处理它们。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 7079

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java中Error与Exception的区别

Error类和Exception类都继承自Throwable类。 Error的继承关系: Exception的继承关系: 二者的不同之处: Exception: 1.可以是可被控制(checked) 或不可控制的(unchecked)。 2.表示一个由程序员导致的错误。 3.应该在应用程序级被处理。 Error: 1.总是不可控

一转身就是一辈子 3万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java中Exception和Error有什么区别??

Java中捕获异常的情况

mar1111s的博客 679

JAVA中Error与Exception的区别——面试

Error(错误)和Exception(异常)的区别——面试

m0_66349763的博客 1673

Java - Error和Exception有什么区别?

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net Error表示系统级的错误和程序不必处理的异常,是恢复起来不是不可能但很困难的情况下的一种严重问题:比如内存溢出,不可能指望程序能处理这样的情况。 Exception表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如...

了解➔熟悉➔掌握➔精通 3万+

【JAVA】Exception和Error的区别

Eeception(异常)是程序正常运行过程中,可以预料并通过程序代码处理的不正常情况。Error(错误)是指在正常情况下,几乎不可能恢复或处理的严重问题,通常与环境相关,如JVM、系统资源耗尽等。

洗棉花糖的浣熊的博客 472

java exception的区别_java中error和exception的区别

Error类和Exception类的父类都是throwable类,他们的区别是:Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和预防,遇到这样的错误,建议让程序终止。Exception类表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异...

weixin_34959771的博客 291

Java中Exception 和 Error 有什么区别

在Java中,Exception和Error都是Throwable类的子类,表示程序中发生了一些异常情况。Exception:表示程序中可以被捕获和处理的异常,是程序员可以预测和处理的异常,通常是由程序逻辑或用户输入错误导致的,如输入不合法、文件不存在等。Exception分为受检查异常(checked exception)和非受检查异常(unchecked exception)。受检查异常必须在方法声明中声明并处理,否则代码无法通过编译;而非受检查异常可以不处理,但是如果不处理就会导致程序崩溃。

tyxjolin的专栏 258

Java面试必备:Java 中 Exception 和 Error 的区别

在 Java 编程中,异常处理是保证程序健壮性的重要机制。Java 提供了 `Throwable` 类作为所有错误和异常的父类,其下有两个主要子类:`Exception` 和 `Error`。本文将详细探讨这两者的区别,并通过代码示例和流程图帮助理解。

qq_58299462的博客 1350

Java 中 Exception 和 Error 的区别

Exception通常表示可以捕获和处理的异常,用于程序级别的错误。Error通常表示严重的问题,这些问题是程序无法处理的,通常表示系统级的错误。在编写 Java 程序时,你应该关注如何处理Exception,而对于Error,通常只需要了解它们的存在,并确保程序能够优雅地处理或记录这些错误情况。

Maisule的博客 180

417. Java 中 Exception 和 Error 有什么区别?

Exception表示程序中可以预期的、可以处理的异常。程序可以通过适当的异常处理逻辑进行恢复。Error则表示系统级的、不可恢复的错误。通常情况下,程序无法处理这种错误,也不应该尝试处理。因此,我们一般关注的是Exception,而Error通常意味着更严重的问题,比如 JVM 或系统资源不可用。

开源驱动,创造价值;坦诚清晰,快速失败;让复杂可计算。 1124

Java中error和Exception区别

Java中error和Exception区别

xiaoge613的博客 4278
上一篇: Fail Fast与Fail Safe的区别
下一篇: 浅谈Git与SVN的使用感受
Hooting
博客等级 码龄17年 11粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值