java第7天课堂笔记 (java异常)

 一、Java异常处理机制概述
  1、Java虚拟机用方法调用栈来跟踪每个线程中一系列的方法调用过程。
  2、方法中的代码块可能抛出异常,有如下两种处理办法:
   (1)在当前方法中通过try…catch语句捕获并处理异常。
   (2)在方法的声明处通过throws语句声明抛出异常
  3、当Java虚拟机追溯到调用栈的底部的方法时,如果仍然没有找到处理该异常的代码块,将按以下步骤处理:
   (1)调用异常对象的printStackTrace()方法,打印来自方法调用栈的异常信息。
   (2)如果该线程不是主线程,那么终止这个线程,其他线程继续正常运行。如果该线程是主线程(即方法调用栈的底
        部为main()方法),那么整个应用程序被终止。
       
二、运用Java异常处理机制
  1、在Java语言中,用try…catch语句来捕获异常,
 格式如下: try{
    //可能会出现异常的代码
    }
    catch(SQLException e){
    //处理操纵数据库出现的异常
    }
    catch(IOException e){
    //处理操纵输入流和输出流出现的异常
    }
   
   2、finally语句中的代码是在异常处理的任何情况下都必须执行的代码。finally代码块能保证特定的操作总是会被执行,
       它的形式如下: try{
     //可能会出现异常的代码
     }
     catch(Exception e){
     //处理异常
     }
     finally{
     //特定的操作
     }
   3、不管try代码块中是否出现异常,都会执行finally代码块。
   4、如果一个可能会出现异常,但没有能力处理这种异常,可以在方法声明处用throws子句来声明抛出异常。一个方法可能会出
       现多种异常,throws子句允许声明抛出多个异常,例如:
      public void method()throws SQLException,IOException{…}
   5、throw语句用于抛出异常,由throw语句抛出的对象必须是java.lang.Throwable类或者其子类的实例。

三、异常处理语句的语法规则:
  (1)try代码块不能脱离catch代码块或finally代码块而单独存在。try代码块后面至少有一个catch代码块或finally代码块。
  (2)try代码块后面可以有零个或多个catch代码块,还可以有零个或至多一个finally代码块。如果catch代码块和finally代
      码块并在,finally代码块必须在catch代码块后面。
  (3)try代码块后面可以只跟finally代码块。
  (4)在try代码块中定义的变量的作用域为try代码块,在catch代码块和finally代码块中不能访问该变量。
  (5)当try代码块后面有多个catch代码块时,Java虚拟机会把实际抛出的异常对象依次和各个catch代码块声明的异常类型匹配,
      如果异常对象为某个异常类型或其子类的实例,就执行这个catch代码块,而不会再执行其他的catch代码块。
  (6)如果一个检查异常,要么用try…catch语句捕获,要么用throws语句声明将它抛出,否则会导致编译错误。
  (7)throws语句后面不允许紧跟其他语句,因为这些语句永远不会被执行。
 
四、异常流程的运行过程:
  (1)finally语句不会被执行的惟一情况是先执行了用于终止程序的System.exit()方法。
     exit()方法的定义如下:public static void exit(int status)
     exit()方法的参数status表示程序终止时的状态码,按照编程惯例,0表示正常终止,非零数字表示异常终止。
  (2)return语句用于退出本方法。在执行try或catch代码块中的return语句时,假如有finally代码块,会先执行finally代码块。
  (3)finally代码块虽然在return语句之前被执行,但finally代码块不能通过重新给变量赋值的方式来改变return语句的返回值。
  (4)建议不要在finally代码块中使用return语句,因为它会导致两种潜在的错误。第一种错误是覆盖try或catch代码块的return语句,
      第二种错误是丢失异常。

五、Java异常类
   1、所有异常类的祖先类为java.lang.Throwable类,它的实例表示具体的异常对象,可以通过throw语句抛出,Throwable类提供
       了访问异常信息的一些方法,常用的方法包括:
    (1)getMessage()——返回String类型的异常信息。
    (2)printStackTrace()——打印跟踪方法调用栈而获得的详细异常信息。在程序调试阶段,此方法可用于跟踪错误 。

   2、常见的运行时异常包括:NullPointerException、ClassCastException、ArithmeticException、
     IllegalArgumentException和IndexOutOfBoundsException,这种异常的特点是Java编译器不会检查它,
      也就是说,当程序中可能出现这类异常时,即使没有用try…catch语句捕获它,也没有用throws子句声明它,还是会通过编译。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值