ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

异常

2021-11-13 19:33:16  阅读:112  来源: 互联网

标签:处理 try finally catch 异常 throws


*基本介绍:java语言中,将程序执行中发生的不正常的情况叫做异常。(开发中语法的错误或逻辑的错误不叫异常)

*异常的分类

  1,Error(错误):Java虚拟机无法解决的问题。如:JVM系统内部错误,资源耗尽问题。

  2,Exception:其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性代码进行处理。

    Exception分为两大类:运行时异常【程序运行时发生的异常】和编译时异常【编程时,编译器检查出的异常】

*异常的体系图:

 

 

   1,异常分为两大类,运行时异常和编译时异常【当在一个方法中使用throws抛出一个编译时异常时,另外一个方法在调用时必须要使用try-catch处理或者throws抛出异常,

                        如果一个方法使用throws抛出的一个运行时异常时,另外一个方法在调用时可以不出来,因为默认处理机制(默认抛出运行时异常给JVM)】

  2,运行时异常,编译器检查不出来。一般是指编程时的逻辑错误。是程序员可以避免其出现的异常。java.lang.RuntimeException类及它的子类都是运行时异常

  3,对于运行时异常,可以不做处理,因为这类异常很普遍,若全处理对程序的可读性和运行效率有影响

  4,编译时异常,是编译器要求必须处置的异常

 

异常处理:

*基本介绍:异常处理就是在异常发生时,对异常的处理

*异常处理的方式

  1,try-catch-finally:程序员在代码中捕获发生的异常,自行处理

    1):Java提供try和catch块来处理异常,try块中包含可能出错的代码。catch块中用于处理try块中发生的异常,可以根据需求在程序中有多个try。。catch块。

    2)基本语法

      try{

      可疑代码

      }catch(异常){//将异常生成对应的异常对象,传递给catch块

      对异常的处理

      }finally{}//finally块可有可无

    3)注意事项:

      1,如果异常发生了,则异常后面的代码不会执行,直接进入catch块

      2,如果异常没有发生,则顺序执行try的代码块,不会进入catch块

      3,如果希望不管是否发生异常,都执行某段代码,则使用finally{}

      4,可以有多个catch语句,捕获不同的异常(进行不同的业务处理),要求父类异常在后,子类异常在前【Exceptin在后,NullPointerException在前】,如果发生异常,只会匹配一个catch块

      5,可以进行try{}-finally{}配合使用,这种用法相当于没有捕获和处理异常,因此程序会崩掉。

    4)小结:

      1,如果没有出现异常,则执行try块中所有的语句,不执行catch块中的语句,如果有finally,最后还需要执行finally里面的语句

      2,如果出现异常,则try块中异常发生后,try块剩下的语句不再执行,将执行catch块中的语句,如果有finally,最后还需要执行finally里面的语句【即使catch块中有return,也不会返回,必须先执行完finally中的语句才返回。】

  2,throws:将发生的异常抛出,交给调用者(方法)来处理,最顶级的处理者是JVM

    1)基本介绍:

      1,如果一个方法(中的语句执行时)可能生出某种异常,d但是并不确定如何处理异常,则此方法应该显示地声明抛出异常,表明该方法将不对这些异常进行处理,而由方法的调用者负责处理。

      2,在方法声明中用throws语句可以声明抛出异常的列表,throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类

    2)注意事项:

      1,对于编译异常,程序中必须处理,比如try-catch或throws

      2,对于运行时异常,程序中如果没有处理,默认就是throws的方式处理【Java中默认的处理机制】

      3,子类重写父类的方法时,对抛出的异常规定:子类重写的方,所抛出的异常要么和父类的保持一致,要么为父类抛出的异常的类型的子类型

      4,在throws过程中,如果有方法try-catch,就相当于处理异常,就不必throws   

  3,自定义异常(throw):

    1)基本介绍:当程序中出现某些错误,但该错误并没有在Throwalbe子类中描述,这个时候可以自己设计异常类,用于描述该错误信息 

 

  4,throw和throws区别

  

 

标签:处理,try,finally,catch,异常,throws
来源: https://www.cnblogs.com/zhouwai/p/15549478.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有