只要继承Exception或者RuntimeException就是异常类的一员
格式
public class 异常类名 extends Exception{
无参构造(){
}
带参构造(){
}
}
//继承异常类
pulic class ScoreException extends Exception{
public ScoreExpetion(){
}
public ScoreException(String message){
super(message);
//调用super传message,先是传给Exception,再传给Throwable
//Throwable里有detailmessage = message;
//这样将来就可以通过getMessage()或者printStackTrace();获取异常信息
}
}
public class Teacher{
public void checkScore(int score) throws ScoreException{
if(score < 0 || score > 100){//产生异常 需要抛出
//用带参构造方法显示异常原因
throw new ScoreException("您输入的分数大于100或小于0");//抛出的异常是继承自Exception,所以要throws抛出异常类ScoreException,跟在方法体后面
}
else{
System.out.println("分数正常");
}
}
}
import java.util.Scanner;
public class TeacherText{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入分数:");
int score = sc.nextInt();
Teacher t = new Teacher();
try{
t.checkScore(score);//没有try、catch会报错,因为Exception是编译异常,必须处理
}
catch{
e.printStackTrace();//输出异常信息
}
}
}
throws
- 用在方法声明后面,跟的是异常类名
- 表示抛出异常,由该方法的调用者来处理
- 表示出现异常的一种可能性,并不一定会发生这些异常
throw
- 用在方法体内,跟的是异常对象名
- 表示抛出异常,由方法体内的语句处理
- 执行throw,一定是抛出了某种异常(new)



