定义
自定义异常:
- 自定义编译时异常:定义一个异常类继承 Exception,重写构造器,在出现异常的地方用 throw new 自定义对象抛出
- 自定义运行时异常:定义一个异常类继承 RuntimeException,重写构造器,在出现异常的地方用 throw new 自定义对象抛出
throws:用在方法上,用于抛出方法中的异常
throw: 用在出现异常的地方,创建异常对象且立即从此处抛出
//需求:认为年龄小于0岁,大于200岁就是一个异常。 public class ExceptionDemo { public static void main(String[] args) { try { checkAge(101); } catch (AgeIllegalException e) { e.printStackTrace(); } } public static void checkAge(int age) throws ItheimaAgeIllegalException { if(age < 0 || age > 200){//年龄在0-200之间 throw new AgeIllegalException("年龄不合法"); }else{ System.out.println("年龄是:" + age); } } }
处理规范
异常的语法注意:
- 运行时异常被抛出可以不处理,可以自动抛出;编译时异常必须处理;按照规范都应该处理
- 重写方法申明抛出的异常,子类方法抛出的异常类型必须是父类抛出异常类型或为其子类型
- 方法默认都可以自动抛出运行时异常, throws RuntimeException 可以省略不写
- 当多异常处理时,捕获处理,前面的异常类不能是后面异常类的父类
- 在 try/catch 后可以追加 finally 代码块,其中的代码一定会被执行,通常用于资源回收操作
异常的作用:
- 可以处理代码问题,防止程序出现异常后的死亡
- 提高了程序的健壮性和安全性
public class Demo{ public static void main(String[] args){ while(true){ try{ Scanner sc = new Scanner(System.in); System.out.println("请您输入您的年年龄:"); int age = sc.nextInt(); System.out.println("年龄:"+age); break; }catch(Exception e){ System.err.println("您的年龄是不正常的!"); } } } }