throw 抛出异常
作用: 可以在方法内用throw手动抛出异常
格式: 可以在方法内用throw手动抛出异常
注意:1)throw写在方法内
2)throw后面的异常类型一定是Exception类型或它的子类型
3)throw抛出的异常必须要处理
如果throw后面的异常类型是编译时异常必须要处理(1.throws 2.try...catch)
如果throw后面写的运行时异常它不可处理该异常
要求:定义一个时间管理类,包含属性季节;定义访问器实现赋值限制,只能是春夏秋冬,如果赋值其它则抛出异常SeasonException。异常处理方式选择try-catch。
首先是异常类
//创建一个异常类
class SeasonException extends Exception {
//对Exception的父类Throwable里面的 getMessage方法进行重写
@Override
public String getMessage() {
return "出现异常";//返回一个String语句
}
}
然后创建一个季节类
class Season {
String season;
public Season(String season) {//有参构造
super();
this.season = season;
}
public void judge(String season) throws SeasonException {//方法用来进行条件判断,throws SeasonException是将异常抛给创建对象的人去处理
if (!(this.season.equals("春") || this.season.equals("夏") || this.season.equals("秋")//如果不满足这四个条件则抛出异常
|| this.season.equals("春"))) {
throw new SeasonException();//抛出自定义的异常
}
}
@Override
public String toString() {//输出
return "TestException [season=" + season + "]";
}
}
最后创建一个测试类 TimeManagement
package com.yzy.exception;
import java.util.Scanner;
/**
* @className TimeManagement.java
* @author yangsir
* @version V1.0
* @date 2019年8月8日-上午11:41:06
* @description
*
*/
public class TimeManagement {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);//键盘录入
System.out.println("请输入一个季节");//提示
String s = input.next();//输入
Season t = new Season(s);//将输入的值传给t
try { //try块,这里放可能出现异常的语句
t.judge(t.season); //进行判断
System.out.println(t.toString()); //如果有异常,不会执行异常后的语句;如果没有异常,则正常输出
} catch (Exception e) { //catch块,这里放出现了异常处理的办法,我这里是进行提示;catch后一定要传参数
System.out.println(e.getMessage() + "!你输入的不是季节");//输出
}
}
}