Java 一个简单自定义异常类的使用@TOC
Java 设置自己的异常类并使用它
一个设置自己异常类的思路:
1.定义自己的异常类
2.写出一个方法,使其抛出我们自定义的异常类
3.捕捉异常并处理
异常的要求
从键盘输入两个三位数,当两个数不符合要求的时候(不为三位数或数字中出现非法字符),抛出异常并提示用户重新输入
代码如下
第一步:设置自己的异常类,需继承自合适的异常类
//第一步:
//设置自己的异常类,用以判断三位数以及是否输入正确
public class HunderException extends Exception{
//构造异常类
public HunderException(String message){
super(message); // 把参数传递给Throwable的带String参数的构造方法
}
}
第二步:写出检测方法,并使其抛出自定义的异常类
//检查三位数是否合法,若不合法,抛出异常
public class HunderSum {
public void isLegal(String s) throws HunderException{
//判断是不是三位数
if (s.codePointCount(0,s.length())!=3)
throw new HunderException("这不是一个三位数");
char first;
char end = '9';
//判断三位数每一位数是不是在0~9的范围内
for (int i=0;i<3;i++){
first = i>0? '0':'1';
if (!(s.charAt(i)>=first && s.charAt(i)<=end))
throw new HunderException("三位数的格式有误!");
}
}
}
第三步:捕捉并处理异常
public class HunderExceptionTest {
public static void main(String[] args) {
int a=0,b=0;
String s_a,s_b;
boolean b_a = true,b_b = true;
Scanner input = new Scanner(System.in);
//检测合法性
HunderSum check = new HunderSum();
//处理 s_a
while (b_a){
s_a = input.next();
try {
check.isLegal(s_a);
}catch (HunderException e){
b_a = false;
System.err.println("HunderException: " + e.getMessage());
}
if (!b_a){
b_a = true;
System.out.println("请重新输入:");
}
else{
a = Integer.valueOf(s_a);
b_a = false;
}
}
//处理 s_b
while (b_b){
s_b = input.next();
try {
check.isLegal(s_b);
}catch (HunderException e){
b_b = false;
System.err.println("HunderException: " + e.getMessage());
}
if (!b_b){
System.out.println("请重新输入:");
b_b = true;
}
else{
b = Integer.valueOf(s_b);
b_b = false;
}
}
System.out.println("a + b = "+(a+b));
}
}
其实最后的处理两个数,可以整合到一起,使用一个 String 类的数组,来进行整合,若有 String 合法,则添加进入数组,数组下标++,添加下一元素,而且,在第一个数合法后,没有提示输入第二个数,有点缺陷
程序结果如图所示: