在java中允许一个函数内,如果有异常,内部不进行处理(try-catch),可以使用throw关键字抛出异常,需要在方法上声明。
Person类
public class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } //throws在方法上申明改方法抛出异常 public void setAge(int age) throws AgeException{ if (age<0||age>120){ //逻辑错误 throw new AgeException(); }else { this.age = age; } } }
自定义异常类AgeException.java
public class AgeException extends Exception{ public AgeException(){ super("年龄必须在0-120岁之间"); } }
测试类Test02.java
import java.util.Scanner; public class Test02 { public static void main(String[] args){ Person p = new Person(); Scanner sc = new Scanner(System.in); System.out.println("请输入你的年龄:"); try { p.setAge(sc.nextInt()); } catch (AgeException e) { e.printStackTrace(); } System.out.println("年龄:"+p.getAge()); } }
运行结果:
输入的年龄在0-120岁之间,正常输出
输入年龄不在0-120岁之间,抛出异常
总结: 自定义异常类,当输入不合法时,代码不会报错,因为某一个异常而终止全部代码的运行。直接输出控制台代码异常的提示信息,用户看不懂,所以要抛出异常,用通俗简单的提示,给用户看。