本文共 1372 字,大约阅读时间需要 4 分钟。
1.Throwable
a) 异常体系: i. Error错误 ii. Exception异常 1. 编译时异常Exception 2. 运行时异常RuntimeException(Exception特殊子类):RuntimeException 如果在函数中抛出的RuntimeException,这时这种异常在编译的时候,编译器不会处理。只有运行代码的时候,如果真的发生了,这时程序就会因为这个异常而停止运行。 b) 总结:对于RuntimeException运行时异常,不需要捕获和声明。 为什么抛出RuntimeException异常,不需要捕获和声明呢?(声明和捕获没有什么影响),运行时异常就是为了让程序停止,让我们看到并且修正; c) RuntimeException和Exception有什么区别: Exception属于编译时异常,编译器在编译时会检测该异常是否异常的处理方案 RuntimeException属于运行时异常,编译器不会检测该异常是否有异常的处理方案,不需要声明。 说明:在Exception的所有子类异常中,只有RuntimeException不是编译异常,是运行时异常,其他子类都是编译异常。2.异常的声明和捕获
a) 注意:在开发中,main函数中不会出现声明,在main函数通常是使用捕获。(但是main函数是可以声明的) b) Throw和throws的区别: throw:(抛出异常) throw书写在函数内,当在函数中有异常的时候,这个异常需要抛出,这时我们可以在函数中使用throw关键字把这个异常抛出。 throws:(声明异常) throws是书写在函数上,当函数中有编译时期的异常时,我们同时又需要把这个异常告诉给函数的调用者,这时可以在函数上使用throws关键字声明函数中的异常。 c)异常的代码块: 1)try-catch代码块try{可能发生异常的代码}catch( 异常类名 变量名 ){处理异常的代码。}
2)try-catch-catch代码块
当try代码块中可能有多个异常的时候,针对每个异常,需要分别进行捕获try{可能发生异常的代码}catch( 异常类名 变量名 ){ //处理}catch( 异常类名 变量名 ){ //处理}......
多catch分别捕获异常的时候,最上面的catch应该捕获的是子类的那个异常,最后的一个catch,一定捕获的需要捕获的异常的最后那个父类。
3.自定义的异常
自定义异常类是建立在java提供的异常类基础之上(必须继承java中的异常类)。也就是说我们自己定义的类要是异常类的话,要求我们的自己定义的类也必须是Throwable下的一个子类。 如果自己定义的异常,需要编译器在编译的时候检测,这时就继承Exception,如果编译的时候不需要检测,这时就继承RuntimeException。4.异常在继承时
继承中的函数复写异常细节: 1、子类复写父类的函数,要求函数的返回值类型,函数名,参数列表必须一致; 2、子类复写父类的函数,子类中函数访问权限大于等于父类中函数的访问权限; 3、不能修改访问方式; 4、子类复写父类的函数时,如果父类的函数上没有声明异常,子类复写的时候,也不能声明异常。转载地址:http://ltwji.baihongyu.com/