异常(Exception)

什么是异常?

在程序运行过程中,会发生各种各样的非常情况。针对这些非正常情况,java引入了异常的概念,以异常类的形式对这些非正常类进行封装,通过异常处理机制对程序运行时发生的各种问题进行处理。

异常的分类

Throwable体系架构图(百度图片)异常(Exception)_第1张图片Error:称为错误类,他表示java运行时产生的内部错误或资源耗尽的错误,比较严重!仅靠修改程序本身是不能恢复执行的。
Exception:称为异常类,他表示程序本身可以处理的错误。

|Throwable的常用方法

方法声明 功能描述
String getMessage() 返回异常的详细消息字符串

Try…catch 和finally

 try{
 	程序代码块
 }catch (ExceptionType  e){
 	//对ExceptionType 的处理
 }

finally

不论异常是否产生都要执行。
需要注意的是在try…catch执行System.exit(0)语句时,会退出当前虚拟机,任何代码都不能执行。

throws

在java中用throws关键字对外声明该方法可能发生的异常,在调用者调用该方法时,就明确地知道该方法有异常,并且必须在程序中进行处理,否则编译无法通过。
throws 关键字声明抛出异常的语法格式如下:

public static int shout(int x,int y) throws Exception{}

多配合try…catch语句使用。
try…catch 进行异常处理,throws进行抛出异常。

如果不知道如何处理声明跑出的异常,也可以使用throws关键字继续讲异常抛出,这样程序也能编译通过。但是一旦异常,不被处理的话,程序就会非正常终止。

运行时异常与编译时异常

编译时异常:Exception类中处理RuntimeException类及其子类外都是编译时异常。
处理编译时异常有两种方法:即try…catch和throws

运行时异常:一般是由程序的逻辑错误产生的,在程序运行时无法恢复。
java编译器不会对其进行检查。

自定义异常

在程序开发中可能需要描述程序中特有的异常情况,因此java运行用户自定义异常。

在实际的开发中,如果没有特殊的要求,自定义的异常类只需要继承
Exception类,在构造方法中使用super()语句调用构造方法即可。

public class DivideByMinusException extends Exception {
	public DivideByMinusExcepton() {
		super();
	}
	public DivideByMinusExceptiion(String message) {
		super(message);
	}
}

throw关键字

throw关键字用于在方法中声明抛出异常的实例对象(不是throws)
throw Exception 异常对象。

public class Example05 {
	public static void main(String[] args) {
		try {
			int result =  divide(4,-2);
			System.out.println(result);
		}catch(DivideByMinusExcepton e) {
			System.out.println(e.getMessage());
		}
		
	}
	public static int  divide(int x,int y) throws  DivideByMinusException{
		if(y<0) {
			throw new DivideByMinusException("除数是负数");
		}		
		int result =  x/y;
		return result;
	}
}
 //Output:除数是负数

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