1、任务5定义用户年龄的异常类,学习情境一(项目开发准备),学习目标,熟悉异常类的层次结构,能够区别Error类和异常Exception及其处理。了解Java的异常处理机制。掌握在程序中使用try-catch-finally语句结构处理异常的方法。掌握异常的声明和抛出。掌握自定义异常的方法。,5.1 任务描述,自定义一个关于年龄的异常类,若输入不合理的年龄,我们将在程序中抛出异常,并做相关处理。,5.2 技术要点,异常类 异常捕获和处理 异常的抛出throw 异常的声明throws 自定义异常类,异常类层次结构,异常类 Error类及其子类,异常类 Exception类及其子类,Exception
2、类的若干子类中包含运行时异常类(RuntimeException)和非运行时异常类。,运行时异常(RuntimeException类),非运行时异常,非运行时异常是由编译器在编译时检测是否会发生在方法的执行过程中的异常。对于非运行时的异常类即使通过仔细编程也无法避免,例如,要访问的文件不存在等情况。这类异常通常都在JDK说明文档中定义的方法后面通过throws关键字将异常抛出,编程时必须捕获并做相应处理。,异常捕获和处理,try正常程序段,可能抛出异常;catch (异常类1 异常变量) 捕捉异常类1有关的处理程序段;catch (异常类2 异常变量) 捕捉异常类2有关的处理程序段;final
3、ly一定会运行的程序代码;,异常捕获和处理,try块捕获异常catch块处理异常 finally块清除工作,异常的抛出throw,异常的抛出可以分为两大类:由系统自动抛出通过关键字throw将异常对象显示地抛出。 显示抛出异常从某种程度上实现了将处理异常的代码从正常流程代码中分离开了,使得程序的主线保证相对完整,同时增加了程序的可读性和可维护性。异常沿着调用层次向上抛出,交由调用它的方法来处理。异常抛出的语法: throw new 异常类( );其中异常类必须Throwable类及其子类。,异常的声明throws,包括throws子句的方法声明的一般格式如下: 方法名(参数列表) throws
4、 方法体;,自定义异常类,用户自定义的异常类,只需继承一个已有的异常类就可以了,包括继承Execption类及其子类,或者继承已自定义好的异常类。如果没有特别说明,可以直接用Execption类作为父类。 自定义类的格式如下:class 异常类名 extends Exception ,自定义异常类,使用自定义异常的步骤如下:首先通过继承java.lang.Exception类声明自定义的异常类。在方法的声明部分用throws语句声明该方法可能抛出的异常。在方法体的适当位置创建自定义异常类的对象,并用throw语句将异常抛出。调用该方法时对可能产生的异常进行捕获,并处理异常。,5.3 任务实施,
5、class AgeException extends Exception String message; AgeException(String name,int m) message=name+的年龄+m+不正确; public String toString() return message; class User private int age=1; private String name; User(String name) this.name=name; public void setAge(int age) throws AgeException if(age=50|age=18)
6、 throw new AgeException(name,age); /方法抛出异常,导致方法结束 else this.age=age; public int getAge() System.out.println(年龄+age+: 输入正确); return age; ,public class Age public static void main(String args) User 张三=new User(张三); User 李四=new User(李四); try 张三.setAge(-20); System.out.println(张三年龄是: +张三.getAge(); catch(AgeException e) System.out.println(e.toString(); try 李四.setAge(18); System.out.println(李四年龄是: +李四.getAge(); catch(AgeException e) System.out.println(e.toString(); ,