Java中的自定义异常
创始人
2024-11-11 07:36:22
0

自定义异常:

JAVA无法为这个世界上全部的问题都提供异常类来代表。如果企业自己的某种问题,想通过异常来表示,以便用异常来管理该问题,那就需要自己来定义异常类。

自定义异常的种类:

自定义运行时异常

自定义运行时异常(Custom Runtime Exception)在Java编程中扮演着重要的角色,尤其是在处理那些不需要强制调用者进行异常处理的错误情况时。这些异常通常继承自RuntimeException类或其子类,并且由于它们是“非受检的”,因此不需要在方法签名中显式声明抛出。下面详细讲解自定义运行时异常的几个关键点:

1. 继承自RuntimeException

自定义运行时异常首先必须继承自RuntimeException类或其任何子类。这样做的原因是RuntimeException及其子类代表了在Java程序中可能发生的运行时错误,这些错误通常是由于编程错误或意外的运行时条件导致的,而不是由于调用者的错误。

2. 构造函数

自定义运行时异常类通常会定义至少一个构造函数,该构造函数接受一个字符串参数作为错误消息。这个字符串将被传递给RuntimeException的构造函数,以便在异常被抛出时能够提供一个有用的错误描述。

代码解释:
package day5; //因为是异常,必须让这个类继承自RuntimeException才能成为一个运行时异常类。 public class AgeillegalRuntimeException extends RuntimeException {     //直接右键,菜单点开Generate,然后找到构造器      public AgeillegalRuntimeException() {     }      public AgeillegalRuntimeException(String message) {//这个参数用于封装问题的原因。         super(message);     } }  public class Demo1 {     public static void main(String[] args) {         try {             setAge(200);             System.out.println("底层执行成功");         } catch (Exception e) {             e.printStackTrace();             System.out.println("底层出现了bug");         } //他一旦出现这个问题,他会用一个异常对象的形式抛上来, //抛上来之后呢,这边想办法把异常对象呢给抓住,怎么抓住呢? //你可以选中这个代码,按住ctrl Alt加T键。 //选择第6个,他就可以把这个方法调用的时候可能从底层抛出的异常对象给抓住。 //这边呢他是把这个异常对象信息给打印出来了 //我们还可以在这个地方提示一下,比如说底层出现了bug      }     public static void setAge(int age){         if(age>0&&age<150){             System.out.println("年龄合法 "+age);         }else{ //            System.out.println("年龄不合法");这样写太LOW了,上层调用者不知道 //            并且这个年龄非法。不属于JAVA的异常。所以我们需要自定义异常。              throw new AgeillegalRuntimeException("you age are illegal "+age); //其实我们就用这个自定义异常类创建了一个异常对象封装的这个年纪非法的问题 //接着要注意,你要把这个异常对象抛到上面去,别人才知道底层出现了什么问题? //怎么抛呢?你要用一个关键字throw,它指的就是抛出去这个异常对象 //抛到方法的入口这里,再抛给他的调用者(main)         }     } } //保存200的时候,它首先在这个地方出现了一个叫做年龄非法的异常啊, //然后他说的是原因是你的年龄是非法的,年龄是200,跟那个官方是不是一样的? //他怎么做的?你调这个方法的时候把200传给这个age,然后它就到这个分支这边来了, //他就知道这个年龄呢就有问题了,他就把了异常对象又创建出来, //然后把这个问题的原因呢封装起来,再把这整个异常对象又从这个地方抛给调用者, //抛掉的异常对象就会直接跳到这个地方来被catch抓住,catch抓住之后,他会把这个异常对象信息打印 

自定义编译时异常

自定义编译时异常和自定义运行时异常。非常相似。我们只需要把那个运行时异常类改为编译时异常类。

package day5; //因为是异常,必须让这个类继承自Exception才能成为一个编译时异常类。 public class AgeillegaException extends Exception {     //直接右键,菜单点开Generate,然后找到构造器      public AgeillegaException() {     }      public AgeillegaException(String message) {//这个参数用于封装问题的原因。         super(message);     } }

 其余过程见下图:

 

 如何选择?

讲到这儿呢,很多小伙伴就会有一个疑问,我以后到底是用这个运行时异常还是用这个编译时异常?

其实从实际开发角度来看都是可以的。但是呢我给大家一个标准啊。

如果说你这个问题呢特别严重,程序员很容易犯。你想非常强烈的去提醒,你就应该抛一个编译时异常。那这样的好处是比如说程序员呢他不注意的话,他写完就会报错,就会强烈提醒他要检查。

如果你觉得这个问题呢不严重,你不想打扰程序员,程序员一般呢不会出现这个问题,那我就抛的运营是异常。

相关内容

热门资讯

一分钟了解“金花链接房卡找谁买... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来享受...
华为买谷歌安卓系统,探索自主创... 你知道吗?最近有个大新闻在科技圈里炸开了锅,那就是华为竟然出手购买了谷歌的安卓系统!这可不是一个简单...
实测分享”海洋世界有挂吗“卡农... 实测分享”海洋世界有挂吗“卡农大厅房间卡怎么购买游戏中心打开微信,添加客服【113857776】,进...
秒懂教程!玩拼三张房卡从哪里买... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享...
正版授权“玩链接牛牛金花房卡是... 新天道是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来享...
推荐一款!金花房卡专卖店新西游... 您好!微信新西游/飞鹰互娱大厅链接获取房卡可以通过以下几种方式购买: 1.微信渠道:(新西游/飞鹰...
玩家须知”海洋世界怎么买房卡“... 来教大家如何使用怎么买房卡房卡充值 添加房卡批售商:微【113857775】复制到微信搜索、直接添加...
重大通报,金花微信链接市场价格... 海草众厅房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3、根...
秒懂教程!怎么创建拼三张房间卡... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享...
IA解析/金花房卡出售新奇玩乐... IA解析/金花房卡出售新奇玩乐/微信链接房卡购买渠道新奇玩乐是一款非常受欢迎的游戏,咨询房/卡添加微...
ia实测“金花房卡链接怎么购买... 新超圣牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房...
实测分享”赢家众娱房卡获取“拼... 实测分享”赢家众娱房卡获取“拼十房卡充值 微信牛牛房卡客服微信号微信游戏中心打开微信,添加客服【11...
ia攻略/斗牛房间怎么创建的生... 生肖系列/新大圣是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:33...
秒懂教程!微信牛牛房卡怎样开,... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:56001354许多玩家在游戏中会购买房卡来享受...
科技实测!牛牛房卡出售旺旺大厅... 您好!微信旺旺大厅大厅链接获取房卡可以通过以下几种方式购买: 1.微信渠道:(旺旺大厅)大厅介绍:...
玩家攻略”赢家众娱是如何购买的... 玩家攻略”赢家众娱是如何购买的“详细房卡使用教程 微信牛牛房卡客服微信号微信游戏中心打开微信,添加客...
一分钟推荐“微信怎样开炸金花房... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
推荐一款!牛牛房卡出售江山大厅... 今 日消息,江山大厅房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更新,简单...
正规平台有哪些,游戏推荐斗牛房... 神盾大厅/新天道房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 ...
玩家须知”海豚大厅如何购买房卡... 玩家须知”海豚大厅如何购买房卡“拼三张房卡充值 微信牛牛房卡客服微信号微信游戏中心打开微信,添加客服...