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() + "!你输入的不是季节");//输出
		}
	}
}