异常Throwable
自定义异常案例:
package com.week03.Day01;
/*
*总结:异常:Throwable
* / \
* Error Exception
* / \
* CheckException RuntimeException
* 编译时异常:1、直接抛出异常,由调用者处理异常
* 2、直接catch捕获异常,处理掉异常
*
* 运行时异常:1、直接抛出异常,由调用者处理异常
* 2、直接catch捕获异常,处理掉异常
* 3、编写健壮性代码,完善程序
*
* throw 和 throws 的区别:throw:制造异常
* throws:抛出异常
*
* 捕获异常格式:try{
* 可能出现异常的代码
* }catch(异常类型 变量){
* 处理异常/变量名.printStackTrace()
* }finally{
* 无论是否存在异常必定执行(return 也阻拦不了)
* }
*
* 自定义异常:编译自定异常时:extends Exception(父类,不继承CheckException是因为无这个类新的异常)
* 运行自定异常时:extends RuntimeException(父类)
*
* */
public class Demo02 {
public static void main(String[] args) {
User u=new User();
// u.setAge(-10);
try {
u.setAge(-10);
} catch (AgeException e) {
try {
u.setAge(20);
} catch (AgeException ex) {
ex.printStackTrace();
}
}
u.setName("张三");
System.out.println(u.toString());
}
}
//class AgeException extends RuntimeException{
class AgeException extends Exception{
public AgeException(){
}
public AgeException(String s){
super(s);
}
}
class User{
private int age;
private String name;
public int getAge() {
return age;
}
@Override
public String toString() {
return "User{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
public void setAge(int age) throws AgeException {
if(age<18 || age>50) {
throw new AgeException(age + "不合法");
}
this.age=age;
}
public User() {
}
public String getName() {
return name;
}
public User(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
}