🤖 AI文章摘要 gemini-2.0-flash-lite

这篇文章介绍了Java的异常处理机制,包括异常的抛出与捕捉,异常的类型(运行期异常和编译期异常),以及异常与多态的关系。文章还介绍了Java内置异常类(如Exception)的常用方法,如getMessage()、toString()和printStackTrace(),并提供了自定义异常的创建和使用示例。最后强调了finally代码块在释放资源中的作用,以及子类方法抛出异常的限制。

410a945cc98d81a17221fbc885a63ec7

java的异常处理机制

异常抛出与捕捉


try{
	可能产生异常的代码
}catch(异常类型 异常变量)…
finally{无论是否发生异常都会执行的代码}
//----------------------------------
public void function() throws 异常类型,...{
	trow 异常变量
}
  • 父类方法的异常子类只能抛出小于或等于父类方法抛出的异常, 若等于父类抛出的异常可以不写异常
  • java在异常处理中加入的finally代码块一般用来释放try中占用的资源, 一般不做return返回

异常类型

java的异常类型必须继承自Exception类, 并实现Throwable接口.

  • 运行期异常(例如NullPointerException)的处理过程和C++一致, 可不使用throws声明
  • 编译期异常(例如FileNotFoundException)调用者必要须要处理, 若处理不了需手动向上抛出异常, 必须在方法声明处使用throws声明编译期异常

异常与多态

和C++一致

内置异常

Exception类实现了Throwable, 它含有以下常用方法


public String getMessage() 简短信息
public String toString() 详细信息
public void printStackTrace(), 若对象抛给了jvm则默认调用的是该方法, 异常信息是最全面的

自定义异常


public class RegisterException extends Exception { 
	public RegisterException() {
		/*空参构造*/ 
	}
	public RegisterException(String message) { 
		/*有参构造*/ 
		super(message); 
	} 
}
public class Main{
	public static void main(String[] args){
		try{
			throw new RegisterException("自定义异常");
		}catch(RegisterException e){
			e.printStackTrace();
		}
	}
}