黑马程序员——Java基础——异常

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

异常体系结构

Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。 
在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Error和异常Exception。

Exception 有一个比较特殊的异常运行时异常

黑马程序员——Java基础——异常_第1张图片

异常处理

1.;jvm自己处理,把异常的名称,错误原因及异常出现的位置等信息输出在了控制台,之后程序停止执行

2.手动处理

1).try…catch…finally抓取

class Test{
	void Div(int num1,int num2){
		try{
			//可能发生异常的代码
			num1 = num1/num2;//可能发生除零异常
		}catch(Exception e){
			//处理部分
			System.out.println("被除数不能为0");
		}finally{
			//必须执行的代码
		}
	}
}


2).throws抛出异常,交给上层处理


class Test{
	void Div(int num1,int num2) throws Exception{
			num1 = num1/num2;//可能发生除零异常
	}
}


异常处理的注意事项

1.声明异常时多个异常,对多个异常处理,声明几个异常对应几个catch()

2.RuntimeException不需要在函数上声明,也可以不catch


异常继承是的注意事项

1.      子类在覆盖父类时,如果父类发方法抛出异常,那么子类覆盖方法,只能抛出父类的异常或该异常的子类

2.      如果父类抛出多个异常.那么子类覆盖该方法时.只能抛出父类异常的子集

3.      父类或接口的方法中没有抛出异常.那么子类在覆盖方法时,也可以不抛出

4.      如果子类方法发生异常,就必须进行try处理,绝对不能抛出


finally

1.被finally控制的语句体一定会执行  特殊情况:在执行到finally之前jvm退出了(比如System.exit(0)))

2.用于释放资源


final,finally,finalize的区别?

1.final用于定义常量,是关键字

2.finally{}用于标示代码块,是try...catch...finally的一部分

3.finalize()是方法,jvm回收资源的时候调用此方法


throw和throws是的区别?

1.throw:在方法体中,后面跟的是异常对象名,并且只能是一个
throw抛出的是一个异常对象,说明这里肯定有一个异常产生了
2.throws:在方法声明上,后面跟的是异常的类名,可以是多个
throws是声明方法有异常,是一种可能性,这个异常并不一定会产生

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