来源:www.iteye.com/blog/yangshen998-1311682
代码 public class ExceptionTypeTest {public void doSomething()throws ArithmeticException{System.out.println();}public static void main(){ExceptionTypeTest ett = new ExceptionTypeTest();ett.doSomething();}}问题1:上面的法式能否编译通过?并申明理由。解答:能编译通过。阐发:根据一般常理,定义doSomething办法是定义了ArithmeticException异常,在main办法里面挪用了该办法。
那么应当继续抛出或者捕捉一下。但是ArithmeticException异常是继承RuntimeException运行时异常。
Java里面异常分为两大类:checkedexception(查抄异常)和unchecked exception(未查抄异常),关于未查抄异常也叫RuntimeException(运行时异常),关于运行时异常,java编译器不要求你必然要把它捕捉或者必然要继续抛出,但是对checkedexception(查抄异常)要求你必需要在办法里面或者捕捉或者继续抛出。
问题2:上面的法式将ArithmeticException改为IOException能否编译通过?并申明理由。解答:不克不及编译通过。阐发:IOException extends Exception 是属于checked exception,必需停止处置,或者必需捕捉或者必需抛出。
总结:java中异常分为两类:checked exception(查抄异常)和unchecked exception(未查抄异常),关于未查抄异常也叫RuntimeException(运行时异常).
对未查抄的异常(unchecked exception )的几种处置体例:
捕捉继续抛出不处置对查抄的异常(checked exception,除了RuntimeException,其他的异常都是checked exception )的几种处置体例:
继续抛出,消极的办法,不断能够抛到java虚拟机来处置用try...catch捕捉留意,关于查抄的异常必需处置,或者必需捕捉或者必需抛出
异常处置(Exception) 1.异常:法式再运行期间发作的不一般事务,它会打断指令的一般流程。异常都是发作在法式的运行期,编译呈现的问题叫语法错误。
2.异常的处置机造:1)当法式再运行过程中呈现了异常,JVM主动创建一个该类型的异常对象。同时把那个异常对象交给运行时系统。(抛出异常)
2)运行时系统承受到一个异常对象时,它会再产生异常的代码附近查找响应的处置体例。
3)异常的处置体例有两种:
捕捉并处置:在异常的代码附近显示用try/catch停止处置(不合理),运行时系统捕捉后会查询响应的catch处置块,再catch处置块中对该异常停止处置。查看发作异常的办法能否有向上声明异常,有向上声明,向上级查询处置语句,若是没有向上声明,JVM中断法式的运行并处置。用throws向外声明(合理的处置办法)3.异常的分类:
java.lang.Throwable
Error错误:JVM内部的严峻问题。无法恢复。法式人员不消处置。Exception异常:通俗的问题。通过合理的处置,法式还能够回到一般施行流程。要求编程人员要停止处置。RuntimeException:也叫非受检异常(unchecked exception).那类异常是编程人员的逻辑问题。应该承担责任。Java编译器不停止强迫要求处置。也就是说,那类异常再法式中,能够停止处置,也能够不处置。- 非RuntimeException:也叫受检异常(checked exception).那类异常是由一些外部的偶尔因素所引起的。Java编译器强迫要求处置。也就是说,法式必需停止对那类异常停止处置。4.常见异常:1)非受检的:
NullPointerException,ClassCastException,ArrayIndexsOutOfBoundsException,ArithmeticException(算术异常,除0溢出)
2)受检:
Exception,FileNotFoundException,IOException,SQLException.
5.异常处置的两种体例:1).显示用try/catch停止处置(不合理)
try{//可能会呈现异常的代码段;}catch(异常类型1 变量名){ //处置造定类型的异常//对该类型异常的处置代码段;e.printStackTrace();}catch(){}[finally{//无论能否发作异常都要施行的代码段;//经常用来清理资本}]2).向上声明:用throws关键字,向外声明(合理的处置办法)
声明本办法可能会抛出的异常列表。
...办法名(参数列表) throws 异常类型1,异常类型2
向上声明是告诉本办法的挪用者,在利用本办法时,应该对那些异常停止处置。
6.手动抛出一个异常:当法式逻辑不契合期望时,要中行后面代码的施行时。在办法的代码段中,能够利用throw关键字手动抛出一个异常。
留意:若是手动抛出的是受检异常,那么本办法必需停止处置(应该接纳向上声明那个异常);若是手动抛出的长短受检异常,那么能够停止处置,也能够不处置。
7.自定义异常:当需要一些跟特定营业相关的异常信息类时。能够继承袭承Exception来定义一个受检异常。也能够继承自RuntimeException或其子类来定义一个非受检异常。
8.异常归纳综合:一个图两种处置体例.
9.异常理论:察看抛出的异常的名字和行号很重要。
应该捕捉和处置那些已知若何处置的异常,传递那些不知若何处置的异常。
尽量削减try语句块的体积。
for(int i=1;i<=1000;i++){try{...}catch(...)}不合理
尽量削减try-catch语句的嵌套。
在catch块代码段中,应该打印除该异常的仓库跟踪信息以便利调试。
利用 throws关键字来声明办法可能会抛出的异常throws能够声明办法可能会抛出一个或多个异常,异常之间用','离隔
若是声明的可能会抛出的异常长短受检的,该办法的挪用者能够处置也能够不处置。若是声明的可能会抛出的异常是受检的,该办法的挪用者必需停止处置。用throw关键字来手动抛出一个异常,若是手动抛出的异常是一个受检异常,那么必需停止处置
处置体例有两种:
显示用try/catch停止处置(不合理)用throws向外声明(合理的处置办法)应捕捉和处置那些已知若何处置的异常,而传递那些不知若何处置的异常。
近期热文保举:
1.1,000+ 道 Java面试题及谜底整理(2022最新版)
2.劲爆!Java 协程要来了。。。
3.Spring Boot 2.x 教程,太全了!
4.别再写满屏的爆爆爆炸类了,尝尝粉饰器形式,那才是文雅的体例!!
5.《Java开发手册(嵩山版)》最新发布,速速下载!
觉得不错,别忘了随手点赞+转发哦!






还没有评论,来说两句吧...