java中如何创建自定义异常Create Custom Exception
9.创建自定义异常 Create Custom Exception
马克-to-win:我们可以创建自己的异常:checked或unchecked异常都可以, 规则如前面我们所介绍,反正如果是checked异常,则必须或者throws,或者catch。到底哪个好,各路架构师大神的意见是50对50。见我本章后面的附录。sun公司开始说,checked异常可以使你的系统异常语义表达很清楚。但很多人经过一段时间的实践后,马上表示了异议。checked异常是java独有的,但连Thinking in java的作者都表示,checked异常作为一种java特有的实验行为,不是很成功。我个人的意见是:为了达到解耦的目的,最好继承unchecked异常。否则你各种业务方法都得throws。将来业务方法一旦改变,还得考虑处理这些throws。(新手可忽略)比如你的业务方法a里如果新加了一句throw受检异常,而且你还没有catch,则调用你这个a方法的客户程序将必须或者catch或者throws,反正必须做出相应调整。如果当初你的a方法里只是抛出一个非受检异常,客户程序就不用做任何调整了。
例1.9.1
public class Test {
public static void main(String args[]) throws RelationshipExceptionMark_to_win {
int talkTimesPerDay = 2;
if (talkTimesPerDay < 3) {
RelationshipExceptionMark_to_win e = new RelationshipExceptionMark_to_win();
e.setMsg("每天说话小于3 次,抛出关系异常的异常,分手");
System.out.println("马克-to-win:here");
throw e;
}
System.out.println("马克-to-win:优雅结束");
}
}
class RelationshipExceptionMark_to_win extends Exception {
String msg;
String getMsg() {
return msg;
}
void setMsg(String msg) {
this.msg = msg;
}
}
例1.9.2
public class Test {
public static void main(String args[]) {
int talkTimesPerDay = 2;
if (talkTimesPerDay < 3) {
RelationshipExceptionMark_to_win e = new RelationshipExceptionMark_to_win();
e.setMsg("每天说话小于3 次,抛出关系异常的异常,分手");
throw e;
}
System.out.println("马克-to-win:优雅结束");
}
}
class RelationshipExceptionMark_to_win extends RuntimeException {
String msg;
String getMsg() {
return msg;
}
void setMsg(String msg) {
this.msg = msg;
}
}
更多内容请见原文,文章转载自:https://blog.csdn.net/qq_44639795/article/details/103108457
java中如何创建自定义异常Create Custom Exception的更多相关文章
- Java中如何创建进程(转)
在Java中,可以通过两种方式来创建进程,总共涉及到5个主要的类. 第一种方式是通过Runtime.exec()方法来创建一个进程,第二种方法是通过ProcessBuilder的start方法来创建进 ...
- Java中如何创建线程
Java中如何创建线程 两种方式:1)继承Thread类:2)实现Runnable接口. 1.继承Thread类 继承Thread类,重写run方法,在run方法中定义需要执行的任务. class M ...
- java中如何创建带路径的文件
请教各位大侠了,java中如何创建带路径的文件,说明下 这个路径不存在 ------回答--------- ------其他回答(2分)--------- Java code File f = new ...
- Java 中能创建 volatile 数组吗?
能,Java 中可以创建 volatile 类型数组,不过只是一个指向数组的引用,而不 是整个数组.我的意思是,如果改变引用指向的数组,将会受到 volatile 的保护, 但是如果多个线程同时改变数 ...
- Java中调用c/c++语言出现Exception in thread "main" java.lang.UnsatisfiedLinkError: Test.testPrint(Ljava/lang/String;)V...错误
错误: Exception in thread "main" java.lang.UnsatisfiedLinkError: Test.testPrint(Ljava/lang/S ...
- [转]Create Custom Exception Filter in ASP.NET Core
本文转自:http://www.binaryintellect.net/articles/5df6e275-1148-45a1-a8b3-0ba2c7c9cea1.aspx In my previou ...
- Java中String创建原理深入分析
创建String对象的常用方式: 1. 使用new关键字 String s1 = new String(“ab”); // 2. 使用字符串常量直接赋值 String s2 = “abc”; 3 ...
- 什么是不可变对象(immutable object)?Java 中怎么 创建一个不可变对象?
不可变对象指对象一旦被创建,状态就不能再改变.任何修改都会创建一个新的对象,如 String.Integer 及其它包装类. 详情参见答案,一步一步指导你在 Java中创建一个不可变的类.
- Java中如何创建不可变(immutable)类
什么是不可变类 1. 不可变类是指类的实例一经创建完成,这个实例的内容就不会改变. 2. Java中的String和八个基本类型的包装类(Integer, Short, Byte, Long, Dou ...
随机推荐
- JZ-014-链表中倒数第 K 个结点
链表中倒数第 K 个结点 题目描述 输入一个链表,输出该链表中倒数第k个结点. 题目链接: 链表中倒数第 K 个结点 代码 /** * 标题:链表中倒数第 K 个结点 * 题目描述 * 输入一个链表, ...
- Jmeter混合场景压力测试
性能测试设计混合场景,一般有几种方式 分别是:1:每个场景设置一个线程组:2:使用if控制器:3:使用吞吐量控制器. 不同的方式实现机制不一样,个人觉得"使用吞吐量控制器"比较方便 ...
- 矩池云升级JupyterLab版本教程
先使用 Xshell 连接矩池云 GPU服务器,可以查看教程. 要在base环境下执行,用下面命令 conda deactivate ps -aux | grep jupyter 我这个进程是616 ...
- 民间流转的pytest项目结构设计
创建上图的pytest项目结构,只需要一条命令即可: tep startproject demo 前提是安装tep0.9.8版本: pip install tep==0.9.8 示例代码单独放在了sa ...
- java后端工程师学习路线
根据自己的经历和见识梳理了一份java后端工程师的学习路线(不含安卓方向),难免有局限性和疏漏,请在评论区反馈意见和建议! 很明显的是我的学习路线过于庞大了[尴尬],你可以认为这些只是我的一家之言,具 ...
- 使用history.back()返回此网页需要使用您之前输入的数据才能正常显示
原因: 表单提交页面中使用了 session_start 函数.由于我们后退浏览的是缓存页,而该函数会强制当前页面不被缓存.解决:php: 此提示出现在一个POST提交的页面,点到其它页面后,通过Ja ...
- PhpStrom 常用的插件
.env files support 可以在env函数使用是提示.env文件中所有的key值的自动完成功能 Markdown support 在编写.md文件时有预览的功能 PHP composer. ...
- vscode使用python虚拟环境
vscode使用python虚拟环境 创建好虚拟环境之后,在vscode中配置使用python的虚拟环境. 首先打开设置,然后搜索python venv, 在python: Venv Path中设置为 ...
- 算法 | Java 常见排序算法(纯代码)
目录 汇总 1. 冒泡排序 2. 选择排序 3. 插入排序 4. 快速排序 5. 归并排序 6. 希尔排序 6.1 希尔-冒泡排序(慢) 6.2 希尔-插入排序(快) 7. 堆排序 8. 计数排序 9 ...
- eclipse中的项目如何打成war包
war包即Web归档文件,将Web项目打成war包可以直接拷贝到Web服务器发布目录(例如Tomcat服务器webapps目录 ),当Tomcat启动后该压缩文件自动解压,war包方便了web工程的发 ...