自定义异常
//技巧
//NameFormat 当前异常的名字,表示姓名格式化问题
//Exception 表示当前类是一个异常类
//运行时异常:RuntimeException 核心 由于参数错误的异常
//编译时异常:Exception核心 提醒程序员检查本地信息
NameFormatException
package function;public class NameFormatException extends RuntimeException {//技巧//NameFormat 当前异常的名字,表示姓名格式化问题//Exception 表示当前类是一个异常类//运行时异常:RuntimeException 核心 由于参数错误的异常//编译时异常:Exception核心 提醒程序员检查本地信息public NameFormatException() {}public NameFormatException(String message) {super(message);}
}
AgeOutOfBoundsException
package function;public class AgeOutOfBoundsException extends RuntimeException {public AgeOutOfBoundsException() {}public AgeOutOfBoundsException(String message) {super(message);}
}
GirlFriend
package function;public class GirlFriend {private String name;private int age;public GirlFriend() {}public GirlFriend(String name, int age) {this.name = name;this.age = age;}/*** 获取** @return name*/public String getName() {return name;}/*** 设置** @param name*/public void setName(String name) {int len = name.length();if (len < 2 || len > 10) {throw new NameFormatException(name+" 格式有误,长度应为:2~10");}this.name = name;}/*** 获取** @return age*/public int getAge() {return age;}/*** 设置** @param age*/public void setAge(int age) {if(age<18 || age>40){throw new AgeOutOfBoundsException(age+"年龄不在范围内");}this.age = age;}public String toString() {return "GirlFriend{name = " + name + ", age = " + age + "}";}
}
Test
package function;import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);GirlFriend gf = new GirlFriend();while (true) {try {System.out.println("请输入心仪女朋友的名字");String name = sc.nextLine();gf.setName(name);System.out.println("请输入心仪女朋友的年龄");String ageStr = sc.nextLine();int age = Integer.parseInt(ageStr);gf.setAge(age);break;} catch (NumberFormatException e) {e.printStackTrace();}catch (NameFormatException e) {e.printStackTrace();}catch (AgeOutOfBoundsException e) {e.printStackTrace();}}System.out.println(gf);}}
意义:就是为了让控制台的报错信息更加的见名思意