zoukankan      html  css  js  c++  java
  • try...catch..finally

    try..catch..finally

     

    try{


    代码块1


    }catch(Exception e){


    代码块2


    }finally{


     代码块3


    catch是抓取代码块1中的异常

    代码块2是出异常后的处理
    代码块3是不管出不出异常都会执行,如果代1或代2中有return,代3会在finally块的语句在try或catch中的return语句执行之后-返回之前执行且finally里的修改语句可能影响也可能不影响try或catch中 return已经确定的返回值,若finally里也有return语句则覆盖try或catch中的return语句直接返回。

    图:

    理解:

    1)Java程序在执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。
     
    2)当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。
     
    3)如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。
     
    4)对于RuntimeException,通常不需要我们去捕获,这类异常由Java运行系统自动抛出并自动处理。
     
    5)派生类构造方法的异常说明必须包含基类构造方法的异常说明,即派生类构造方法的异常必须为基类异常或其父类,当基类构造方法没有异常时,派生类构造方法也可以异常声明。注意,派生类构造器不能捕获基类构造方法抛出的异常。
     
    6)派生类方法可以不抛出异常,即使基类有异常说明,如果派生类方法有异常说明,必须是基类异常或其子类,而且当基类没有异常声明时,派生类方法不允许异常声明(关于构造方法见5中的说明)。
     
    7)我们可以在方法声明时,声明一个不会抛出的异常,Java编译器就会强迫方法的使用者对异常进行处理。这种方式通常应用于abstract class和interface中。
     
    Java标准异常
    Throwable这个Java类被用来表示任何可以作为异常被抛出的类。Throwable对象可分为两种类型(指从Throwable继承而得到的类型):Error用来表示编译时和系统错误;Exception是可以被抛出的基本类型、在Java类库、用户方法以及运行时故障都可能抛出Exception异常。
    Java异常类的结构:
      Throwable
       |____Error
       |____Exception
             |____RuntimeException
             |____其它Exception
      Error:Java运行系统中的内部错误以及资源耗尽的情况。
      Exception:RuntimeException及其子类(编程导致的异常)、其它Exception类。
     
    关于RuntimeException
    RuntimeException(或任何从它继承的异常),对于这种异常类型,编译器不需要异常说明。注意,只能在代码中忽略RuntimeException(及其子类)类型的异常,其他类型异常的处理都是由编译器强制实施的。
     
    关于finally
    对于一些代码,可能会希望无论try块中的异常是否抛出,它们都能得到执行。为了达到这一效果,可以在异常处理程序后面加上finally子句。
    例如:
     
    方法{
      try{
      ……..
      return;//加此条语句
      }
      catch(Exception e){
      }
      finally{
      ……….//会执行
      }
      ……….//不会执行
     
    }

    ------------------------------------------------------------------------------------------------------------------------------------------------------

    方法{
      try{
      ……..
      System.exit(-1);//终止运行
      }
      catch(Exception e){
      }
      finally{
      ……….//不会执行
      }
      ……….//不会执行
     
    }
  • 相关阅读:
    ODBC接口规范
    JDBC与ODBC
    java中newInstance()和new()
    JDBC详解
    用JDBC连接 数据库 进行简单的增删改查
    JDBC接口规范
    JDBC中常用的接口
    java中的getStackTrace和printStackTrace的区别
    linux中的strings命令
    JAVA的容器---List,Map,Set (转)
  • 原文地址:https://www.cnblogs.com/qq1871707128/p/6075289.html
Copyright © 2011-2022 走看看