Java 异常处理


    异常产生后,如果不做任何处理,程序就会被终止。Java的异常处理使程序不会因为一个异常而影响整个程序的执行。

Java捕获异常

    Java的异常捕获结构由try、catch和finally3部分组成。

     try
     {
         //代码段(可能发生异常的代码)
     }catch(异常类型1 ex)
     {
         //对异常处理的代码段    
     }catch(异常类型2 ex)
     {
         //对异常处理的代码段
     }catch(异常类型3 ex)
     {
         //对异常处理的代码段
     }
     . 
     .
     .catch(异常类型n ex)
     {
         //对异常处理的代码段
     }finally
     {
         //总要执行的代码段
     }


通常,异常处理常用一下3个函数来获取异常的有关信息:

 

  1.     getMessage()函数:输出错误性质
  2.     toString()函数:给出异常的类型与性质
  3.     printStackTrace()函数:指出异常的类型、性质、栈层次及出现在程序中的位置

以下4种情况下,finally块不会被执行

  1.     在finally语句块中发生异常
  2.     在前面的代码中使用System.exit()退出程序
  3.     程序所在的线程死亡
  4.     关闭cpu

Java常见异常

常见的异常类
异常类说明
ClassCastException 类型转换异常
ClassNotFoundException 未找到相应类异常
ArithmeticException 算术异常
ArrayIndexOutOfBoundsException 数组下标越界异常
ArrayStoreException 数组中包含不兼容的值抛出的异常
NullPointerException 空指针异常
NoSuchFieldException 字段未找到异常
SQLException 操作数据库异常
NoSuchMethodException 方法未找到抛出的异常
NumberFormatException 字符串转换为数字抛出的异常
NegativeArraySizeException 数组元素个数为负数抛出的异常
StringIndexOutOfBoundsException 字符串索引超出范围抛出的异常
IOException 输入输出异常
IllegalAccessException 不允许访问某类异常
InstantiationException 当应用程序试图使用Class类中的newinstace()方法创建一个累的实例,而指定的类对象无法被实例化时,抛出该异常
EOFException 文件已结束异常
FileNotFoundException 文件未找到异常

自定义异常

     Java内置的异常类可以描述在编程时出现的大部分异常情况,除此之外,用户只需集成Exception类即可自定义异常。

    自定义异常的步骤:

  1.          创建自定义异常类。
  2.          在方法中通过throw关键字抛出异常对象
  3.          如果在当前抛出异常的方法中处理异常,可以使用try-catch语句块捕获并处理,否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常。
  4.          再出现异常方法的调用者中捕获并处理异常。

代码示例:

1 public class MyException extends Exception{    //创建自定义异常,继承Exception类
2          public MyException(String ErrorMessage)  {//构造方法
3                   super(ErrorMessage);   //父类构造方法
4          }
5  }
 1 public class Tran{
 2      //定义方法,抛出异常
 3      static int avg(int number1, int number2) throws MyException {
 4           if (number1<0 || number2<0) {         //判断方法中的参数是否满足指定条件
 5               throw new MyException("不可以使用负数");  //错误信息
 6           }
 7           if (number1>100 || number2>100) {
 8               throw new MyException("数值太大了");
 9           }
10           return (number1 + number2)/2;
11      }
12     public static void main(String[] args){
13            try{
14                  int resullt = avg(102, 150);
15                  System.out.println(resullt);
16             } catch(MyException e){
17                    System.out.println(e);
18             }
19  }
posted @ 2013-05-12 11:37  薛遗山  阅读(273)  评论(0编辑  收藏  举报