Java基础知识——异常处理

异常处理

  • Throwable
  • 编译时异常与运行时异常
    • 编译时异常
    • 运行时异常
  • try..catch...
  • throws
  • 自定义异常

Throwable

Throwable是所有异常的父类。

方法名 说明
public String getMessage() 返回详细消息字符串
public String toString() 返回可抛出的简短描述
public void printStackTrace() 把异常的错误信息输出在控制台

编译时异常与运行时异常

所有 RuntimeException 类及其子类的实例被称为运行时异常,其他的异常都是编译时异常

编译时异常

必须显示处理,否则程序就会发生错误,无法通过编译

运行时异常

无需显示处理,也可以和编译时异常一样处理

try…catch…

try {
	可能出现异常的代码;
} catch (异常类名 变量名) {
	异常处理的代码;
}

执行流程:
程序从try里面的代码开始执行,出现异常会自动生成一个异常类对象,该异常类对象将被提交给Java运行时系统,接收到异常对象后会到catch中去找匹配的异常类,找到后进行异常的处理,执行完毕后,程序可以继续向下执行。

throws

只是抛出异常,并不像try…catch…一样处理了异常,抛出异常后程序不会向下进行。
有时候出现的异常是我们处理不了的,可以用throws的处理方法。

public static void method() throws ArrayIndexOutOfBoundsException{
	int [] arr = {1, 2, 3};
	System.out.println(arr[3]);
}

总结:

  • 编译时异常必须进行处理,可以使用try…catch或throws,如果使用throws这种方案,将来谁调用谁处理。
  • 运行时异常可以不处理,出现问题后需要修改代码。

自定义异常

自定义异常类需要继承自ExceptionRuntimeException
示例:定义一个成绩异常类

public class ScoreException extends Exception{
	public ScoreException() {}
	public ScoreException(String message){
		super(message);
	}
}

Teacher.java

public void checkScore(int score) throws ScoreException{
	if(score < 0 || score > 100){
		throw new ScoreException();
	} else {
		System.out.println("分数正常");
	}
}
throws throw
用在方法声明后面,跟的是异常类名 用在方法体内,跟的是异常对象名
表示抛出异常,由该方法的调用者来处理 表示抛出异常,由方法体内的语句处理
表示出现异常的一种可能性,并不一定会发生这些异常 执行throw一定抛出了某种异常

你可能感兴趣的:(java,exception)