简介

Exception

Exception 类是所有非致命性异常的基类。这些异常通常是由于编程逻辑问题或外部因素(如文件不存在、网络连接失败等)导致的,可以通过适当的编程手段来恢复或处理。Exception 可以进一步分为两大类:

  1. Checked Exceptions(受检异常): 这些异常必须在代码中显式地声明或捕获。它们通常表示可以预见的问题,比如 IOExceptionSQLException。如果一个方法抛出这样的异常,那么调用该方法的方法要么捕获这个异常,要么也声明抛出这个异常(try catchthrow)。
  2. Unchecked Exceptions(非受检异常): 也称为 RuntimeException。这类异常不需要在方法签名中声明,也不需要强制捕获。它们通常表示编程错误,比如数组越界访问(ArrayIndexOutOfBoundsException)、空指针异常(NullPointerException)等。

RuntimeException

RuntimeExceptionException 的子类,用于表示那些在正常情况下不应该发生的错误。

常见的 RuntimeException 子类包括:

  • NullPointerException
  • ArrayIndexOutOfBoundsException
  • IllegalArgumentException
  • ClassCastException
  • ArithmeticException

自定义异常选择

在自定义异常时根据所需进行extends

继承 Exception(受检异常)

  • 预期且可恢复:如果你认为这个异常是程序正常流程中可以预见的情况,并且调用者可以通过某种方式恢复或应对这种情况。
  • 强制处理:因为受检异常必须被方法签名声明或者被捕获,这可以确保调用者不会忽略这种异常。这对于那些可能导致严重问题但又不是编程错误的情况非常有用。
  • 外部因素:如果异常通常是由于外部环境或输入数据引起的(如文件不存在、网络连接失败等),通常应该使用受检异常。

继承 RuntimeException(非受检异常)

  • 编程错误:如果异常表示的是一个不应该发生的编程错误,比如非法参数传递、空指针访问等。
  • 不强制处理:非受检异常不需要在方法签名中声明,也不需要强制捕获。这意味着你可以更灵活地编写代码,而不需要在每个可能抛出异常的地方都进行显式的异常处理。
  • 内部逻辑错误:如果异常是由于内部逻辑错误导致的,而且这种错误应该通过修改代码来解决,而不是通过捕获和处理异常,那么应该使用非受检异常。

总结

  • 如果异常代表的是程序运行中的合理情况,并且希望调用者必须处理这种情况,那么选择继承 Exception
  • 如果异常是由编程错误引起,并且不希望强制调用者处理它,那么选择继承 RuntimeException

自定义异常及统一异常处理

SpringBoot统一异常处理


结束

🎀Java-Exception与RuntimeException的更多相关文章

  1. Exception (2) Java Exception Handling

    The Java programming language uses exceptions to handle errors and other exceptional events.An excep ...

  2. Java Exception & RTTI

    Exception Try { ... ... } catch (Exception ex) { …; throw new Throwable(ex); } catch (Throwable ex) ...

  3. myeclipse启动tomcat会出现 a java exception has occured错误 的解决方法

    在浏览器中可以打开tomcat,结果在myeclipse启动tomcat会出现 a java exception has occured错误 ,之后出现一个Classloader.class的文件,关 ...

  4. eclipse启动tomcat错误:A Java Exception has occurred

    在tomcat bin目录下执行startup.bat可以正常启动,但在eclipse下安装了tomcat插件并且配置tomcat路径后启动且报错:A Java Exception has occur ...

  5. eclipse启动tomcat错误:A Java Exception has occurred(转)

    在tomcat bin目录下执行startup.bat可以正常启动,但在eclipse下安装了tomcat插件并且配置tomcat路径后启动且报错:A Java Exception has occur ...

  6. CTFCrackTools在Windows下显示A Java Exception has occurred的解决方案

    打CTF做密码学的人一定少不了用这个工具,CTFCrackTools,这个几乎可以号称密码学的神器,但是呢,最近博主遇到了一些麻烦事,每次打开的时候都是显示A Java Exception has o ...

  7. Kettle 7启动 Spoon.bat 时报错“A Java Exception has occurred.”的解决方法

    最近在研究Kettle 时出现启动时报错“A Java Exception has occurred.”的问题.刚开始没搞明白是什么原因,后来发现是jdk版本的问题.出现这个错误原因是 Kettle ...

  8. MyEclipse 运行弹出A Java Exception has occurred.

    问题描述 A Java Exception has occurred. 问题原因 这个问题是由较高版本的JDK编译的java class文件试图在较低版本的JVM上运行而产生的错误

  9. Kettle启动时报错Cannot create java virtual machine & A java exception has occurred

    开源免费--最喜欢的四个字没有之一 1.官网下载 https://sourceforge.net/projects/pentaho/files/Data%20Integration/ 下载完后,解压即 ...

  10. 详解Java异常Throwable、Error、Exception、RuntimeException的区别

    在Java中,根据错误性质将运行错误分为两类:错误和异常. 在Java程序的执行过程中,如果出现了异常事件,就会生成一个异常对象.生成的异常对象将传递Java运行时系统,这一异常的产生和提交过程称为抛 ...

随机推荐

  1. K8S故障处理:临时设置节点为不可调度(cordon与drain区别)

    在Kubernetes中,节点驱逐是一种管理和维护集群的重要操作,允许节点在维护.升级或者发生故障时从集群中移除,等到节点修复后,再重新承担pod调度功能. 1.K8s节点驱逐 节点驱逐是指将节点上运 ...

  2. Redis常用指令(详细)

    # Redis 常用指令## 基础命令### 启动与连接```bash# 启动 Redis 服务redis-server# 连接 Redis 客户端redis-cli```### 基本操作```bas ...

  3. C 2017笔试题

    1.下面程序的输出结果是 int x=3; do { printf("%d\n",x-=2); }while(!(--x)); 输出:1 -2 解析:x初始值为3,第一次循环中运行 ...

  4. linux:正则表达式

    介绍 一种模式匹配语言,可以使永远筛选数据以查找特定的内容,可以应用在vim.grep.less.perl.python中 基础 .(点) 匹配除 \n 之外的任何单个字符,若要匹配包括 \n ,则应 ...

  5. 反射:获取Class 类的实例(四种方法)

    Class 类  对象照镜子后可以得到的信息:某个类的属性.方法和构造器.某个类到底实现了哪些接口.对于每个类而言,JRE 都为其保留一个不变的 Class 类型的对象.一个 Class 对象包含了 ...

  6. 使用Hyper-V或者VM虚拟机安装部署Ubantu

    下载Ubantu iso文件 Server版下载 桌面版下载 我使用的是22.04.3版本,目前22.04最新版是22.04.5版本 22.04下载 一.Hyper-V方式 1.安装Hyper-V 参 ...

  7. shell脚本获取本机ip地址

    IP=`ifconfig|grep -v '127.0.0.1'|grep -v 'inet6'|grep 'inet'|awk '{print $2}'|awk 'NR==1'|egrep -o ' ...

  8. .NET最佳实践:避免同步读取HttpRequest

    为什么要避免同步读取 ASP.NET Core 中的所有 I/O 操作都是异步的.服务器实现了 Stream 接口,该接口同时具备同步和异步的方法. 在进行 I/O 操作时,应优先使用异步方法,以避免 ...

  9. 使用iceberg-使用Iceberg数据湖需要注意的点

    一.资料准备 1.mysql地址选择 因为阿里云只读节点binlog保留时间短,需要用读写集群地址.可以登录阿里云控制台查看地址是只读还是读写,不清楚的话可以找dba要读写地址. 二.Iceberg概 ...

  10. Iceberg问题记录-数据湖问题记录跟进

    一.问题追踪 问题 详细描述 提出问题时间 是否完成 计划完成时间 备注 了解Iceberg数据存储方式 了解元数据存储信息.数据组织方式.查询时处理流程等 20231013 是 20231019 ! ...