Java异常

来源:互联网 发布:vasp软件价格 编辑:程序博客网 时间:2024/06/05 11:42

一.异常的概念

      java异常java提供的用于处理程序中错误的一种机制。

       所谓的错误是指在程序运行的过程中发生一些异常事件(如:除0溢出,数组小标越界,索要读取的文件不存在等)。

       设计良好的程序应该在异常发生时提供处理这些错误的方法,是的程序不会因为异常的发生而阻断或产生不可预见的结果。

        java程序在执行的过程中如果出现异常事件,可以生成一个异常对象,该对象封装了异常事件的信息并将被提交给Java运行时的系统,这个过程称为抛出(throw)异常。

        当Java运行时系统接收到异常的对象时,会寻找处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。

二.异常分类

     java中所有的异常都有一个共同的父类就是throwable(可抛出)。

       throwable有两个重要的子类,分别是Exception(异常)和Error(错误)。

       Error是程序无法处理的错误,表示运行应用程序中较严重的问题。

       Exception是程序本身可以处理问题。


三.异常处理机制

      在Java应用程序中,异常的处理机制为:抛出异常,捕获异常。

      抛出异常:当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和和异常出现时的程序状态等异常信息。

      捕获异常:在方法抛出异常之后,运行时的系统转为寻找合适的异常处理器。潜在的异常处理器是异常发生时依次留在调用栈中的方法集合。

3.1捕获异常-

1.try-catch语句

  在java中,异常通过try-catch语句捕获。其一般语法形式为:

 

  1. try {  
  2.     // 可能会发生异常的程序代码  
  3. catch (Type1 id1){  
  4.     // 捕获并处置try抛出的异常类型Type1  
  5. }  
  6. catch (Type2 id2){  
  7.      //捕获并处置try抛出的异常类型Type2  
  8. }  
   

           关键词try后的一对大括号将一块可能发生异常的代码包起来,称为监控区域。Java方法在运行过程中出现异常,则创建异常对象。将异常抛出监控区域之 外,由Java运行时系统试图寻找匹配的catch子句以捕获异常。若有匹配的catch子句,则运行其异常处理代码,try-catch语句结束。

       匹配的原则是:如果抛出的异常对象属于catch子句的异常类,或者属于该异常类的子类,则认为生成的异常对象与catch块捕获的异常类型相匹配。

例1  捕捉throw语句抛出的“除数为0”异常。

  1. public class TestException {  
  2.     public static void main(String[] args) {  
  3.         int a = 6;  
  4.         int b = 0;  
  5.         try { // try监控区域  
  6.               
  7.             if (b == 0throw new ArithmeticException(); // 通过throw语句抛出异常  
  8.             System.out.println("a/b的值是:" + a / b);  
  9.         }  
  10.         catch (ArithmeticException e) { // catch捕捉异常  
  11.             System.out.println("程序出现异常,变量b不能为0。");  
  12.         }  
  13.         System.out.println("程序正常结束。");  
  14.     }  
  15. }  

例2  捕捉运行时系统自动抛出“除数为0”引发的ArithmeticException异常
  1.    public static void main(String[] args) {  
  2.         int a = 6;  
  3.         int b = 0;  
  4.         try {  
  5.             System.out.println("a/b的值是:" + a / b);  
  6.         } catch (ArithmeticException e) {  
  7.             System.out.println("程序出现异常,变量b不能为0。");  
  8.         }  
  9.         System.out.println("程序正常结束。");  
  10.     }  
  11. }  


      



0 0
原创粉丝点击