Java自定义异常
自定义异常的语法形式为:
在编码规范上,一般将自定义异常类的类名名为 XException,其中 X 用来代表该异常的作用。<class><自定义异常名><extends><Exception>
自定义异常类一般包含两个构造方法:一个是无参的默认构造方法,另一个构造方法以字符串的形式接收一个定制的异常消息,并将该消息传递给超类的构造方法。
例如,以下代码创建一个名称为 IntegerRangeException 的自定义异常类:
class IntegerRangeException extends Exception {
public IntegerRangeException() {
super();
}
public IntegerRangeException(String s) {
super(s);
}
}
以上代码创建的自定义异常类 IntegerRangeException 类继承自 Exception 类,在该类中包含两个构造方法。
例 1
编写一个程序,对会员注册时的年龄进行验证,即检测是否在 0~100 岁。1)这里创建了一个异常类 MyException,并提供两个构造方法。MyException 类的实现代码如下:
public class MyException extends Exception {
public MyException() {
super();
}
public MyException(String str) {
super(str);
}
}
2)接着创建测试类,调用自定义异常类。代码实现如下:
import java.util.InputMiatchException;
import java.util.Scanner;
public class Test07 {
public static void main(String[] args) {
int age;
Scanner input = new Scanner(System.in);
System.out.println("请输入您的年龄:");
try {
age = input.nextInt(); // 获取年龄
if(age < 0) {
throw new MyException("您输入的年龄为负数!输入有误!");
} else if(age > 100) {
throw new MyException("您输入的年龄大于100!输入有误!");
} else {
System.out.println("您的年龄为:"+age);
}
} catch(InputMiatchException e1) {
System.out.println("输入的年龄不是数字!");
} catch(MyException e2) {
System.out.println(e2.getMessage());
}
}
}
3)运行该程序,当用户输入的年龄为负数时,则拋出 MyException 自定义异常,执行第二个 catch 语句块中的代码,打印出异常信息。程序的运行结果如下所示。
请输入您的年龄:
-2
您输入的年龄为负数!输入有误!
当用户输入的年龄大于 100 时,也会拋出 MyException 自定义异常,同样会执行第二个 catch 语句块中的代码,打印出异常信息,如下所示。
请输入您的年龄:
110
您输入的年龄大于100!输入有误!
在该程序的主方法中,使用了 if…else if…else 语句结构判断用户输入的年龄是否为负数和大于 100 的数,如果是,则拋出自定义异常 MyException,调用自定义异常类 MyException 中的含有一个 String 类型的构造方法。在 catch 语句块中捕获该异常,并调用 getMessage() 方法输出异常信息。
提示:因为自定义异常继承自 Exception 类,因此自定义异常类中包含父类所有的属性和方法。
- 随机文章
- 世界马尔代夫风景(探索马尔代夫:一个天堂般的度假胜地)
- 嘉鱼马尔代夫游玩(探秘嘉鱼之旅:马尔代夫美景惊艳人心)
- 乡村马尔代夫美食(乡村马尔代夫的佳肴美食,等你来尝!)
- 在马尔代夫吃顿饭(马尔代夫美食体验:品尝当地美味佳肴)
- 马尔代夫有钱(马尔代夫的富裕生活)
- 印度马尔代夫攻略(印度旅行指南:探访美丽的马尔代夫。)
- 平凉的马尔代夫河(平凉河上发现类似马尔代夫的热带风光)
- 约旦 马尔代夫(约旦与马尔代夫加强合作)
- 乙肝 马尔代夫(马尔代夫:乙肝预防与控制指南)
- 武汉马尔代夫景区(武汉这座马尔代夫景区,你去过了吗?)
- 了解马尔代夫地图(新马尔代夫地图:完整详细的海岛指南)
- 水上马尔代夫旅游(探索海底世界,享受水上马尔代夫之旅)
- 安庆太湖马尔代夫(安庆太湖打造“马尔代夫”,美如天堂)
- 反正 马尔代夫(重新探索天堂:马尔代夫等你来)
- 深圳马尔代夫门票(深圳市民最佳度假选择:马尔代夫门票)
- 盱眙马尔代夫景点(盱眙湖与马尔代夫岛屿的异曲同工之处)
- 漳州小马尔代夫在(漳州建成小马尔代夫水上别墅闪耀海滨)
- 蕲州江边马尔代夫(蕲州江边打造马尔代夫风情岛主题公园)
- 珀斯 马尔代夫(珀斯到马尔代夫,度假胜地不容错过!)
- 老马 马尔代夫(老马成马尔代夫游玩达成心愿)
- 绵阳马尔代夫仙海(绵阳游客驻足马尔代夫仙海享美丽沙滩)
- 老高专属马尔代夫(老高的私人度假天堂——马尔代夫岛屿)
- 荆门马尔代夫在哪(荆门华瑞湖畔马尔代夫酒店位置在哪?)
- 马尔代夫中国厨师(中国厨师在马尔代夫展示中华美食之美)
- 闪亮马尔代夫图片(绚烂马尔代夫:缤纷海底世界美轮美奂)
- 马尔代夫主场设施(马尔代夫设立主场设施,备战相关赛事)
- 迪拜出发马尔代夫(从迪拜起飞,前往马尔代夫的旅行计划)
- 贝拉 马尔代夫(贝拉马尔代夫:白沙滩与蓝天交相辉映)
- 斯航 马尔代夫(新标题:斯堪航空公司恢复飞往马尔代夫航班)
- 马尔代夫出圈照片(马尔代夫旅拍再创新高,网友赞不绝口)
