zoukankan      html  css  js  c++  java
  • Java 异常体系

    1.异常简介

      Java把异常作为一种类,当做对象来处理。所有异常类的基类是Throwable类,两大子类分别是Error和Exception。

      系统错误由Java虚拟机抛出,用Error类表示。Error类描述的是内部系统错误,例如Java虚拟机崩溃。这种情况仅凭程序自身是无法处理的,在程序中也不会对Error异常进行捕捉和抛出。

      异常(Exception)又分为RuntimeException(运行时异常)和CheckedException(检查时异常),两者区别如下:

    • RuntimeException:程序运行过程中才可能发生的异常。一般为代码的逻辑错误。例如:类型错误转换,数组下标访问越界,空指针异常、找不到指定类等等。
    • CheckedException:编译期间可以检查到的异常,必须显式的进行处理(捕获或者抛出到上一层)。例如:IOException, FileNotFoundException等等。

    2. 异常的处理

      常用关键字:try、catch、throw(抛出一个异常,动词)、throws(声明一个方法可能抛出的异常finally。

     

    2.1 throws 声明异常

      若方法中存在检查时异常,如果不对其捕获,那必须在方法头中显式声明该异常,以便于告知方法调用者此方法有异常,需要进行处理。 

      在方法中声明一个异常,方法头中使用关键字throws,后面接上要声明的异常。若声明多个异常,则使用逗号分割。

      若是父类的方法没有声明异常,则子类继承方法后,也不能声明异常。

    2.2  try-catch(捕获异常)

      若执行try块的过程中没有发生异常,则跳过catch子句。若是出现异常try块中剩余语句不再执行。开始逐步检查catch块,判断catch块的异常类实例是否是捕获的异常类型。匹配后执行相应的catch块中的代码。如果异常没有在当前的方法中被捕获,就会被传递给该方法的调用者。这个过程一直重复,直到异常被捕获或被传给main方法(交给JVM来捕获)。

      对于try..catch捕获异常的形式来说,对于异常的捕获,可以有多个catch。对于try里面发生的异常,他会根据发生的异常和catch里面的进行匹配(按照catch块从上往下匹配),如果有匹配的catch,它就会忽略掉这个catch后面所有的catch

      如果有finally的话进入到finally里面继续执行。

      try  ctach  fianally 中有return 时,会先执行return ,但是不会返回。在执行完 finally 后 进行返回。

      return 的是基本类型数据时, fianlly 里面的语句不会影响 return 的值,

      return 的是引用类型数据时,此时已经确定了要返回对象的地址(地址一),后面 fianlly 里面的可以通过修改前面地址一中的内容修改返回的内容,

      但是如果将对象指向另一个地址(地址二),则不会影响返回的内容。因为返回的对象地址已经确定为地址一,只能通过修改地址一对象的内容修改返回的信息。

  • 相关阅读:
    还在写onClickListener()???你OUT拉
    Java 中的reference
    如何将eclipse上的android项目转移到android studio
    List,Set,Map再学习一下
    Java对象实例化的速度的一个试验
    如何自定义ImageView并让其渐变出现(李刚老师)
    android studio 中git插件的使用 github项目的配置及操作
    eGit插件
    原来Linux才是深入学习3D的好去处【原创】
    用FileMapping跨进程共享数据
  • 原文地址:https://www.cnblogs.com/virgosnail/p/9678909.html
Copyright © 2011-2022 走看看