小白教程

 找回密码
 立即注册
小白教程 首页 系列教程 Java系列教程 查看内容

Java 异常处理

发布者: 小白教程



捕获异常

使用 try 和 catch 关键字可以捕获异常。try/catch 代码块放在异常可能发生的地方。

try/catch 代码块中的代码称为保护代码,使用  try/catch 的语法如下:

  1. try
  2. {
  3.    // 程序代码
  4. }catch(ExceptionName e1)
  5. {
  6.    //Catch 块
  7. }

Catch 语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try 后面的 catch 块就会被检查。

如果发生的异常包含在 catch 块中,异常会被传递到该 catch 块,这和传递一个参数到方法是一样。

实例

下面的例子中声明有两个元素的一个数组,当代码试图访问数组的第三个元素的时候就会抛出一个异常。

  1. // 文件名 : ExcepTest.java
  2. import java.io.*;
  3. public class ExcepTest{
  4.    public static void main(String args[]){
  5.       try{
  6.          int a[] = new int[2];
  7.          System.out.println("Access element three :" + a[3]);
  8.       }catch(ArrayIndexOutOfBoundsException e){
  9.          System.out.println("Exception thrown  :" + e);
  10.       }
  11.       System.out.println("Out of the block");
  12.    }
  13. }

以上代码编译运行输出结果如下:

  1. Exception thrown  :java.lang.ArrayIndexOutOfBoundsException: 3
  2. Out of the block

多重捕获块

一个 try 代码块后面跟随多个 catch 代码块的情况就叫多重捕获。

多重捕获块的语法如下所示:

  1.  try{
  2.     // 程序代码
  3.  }catch(异常类型1 异常的变量名1){
  4.     // 程序代码
  5.  }catch(异常类型2 异常的变量名2){
  6.     // 程序代码
  7.  }catch(异常类型2 异常的变量名2){
  8.     // 程序代码
  9.  }

上面的代码段包含了 3 个 catch 块。

可以在 try 语句后面添加任意数量的 catch 块。

如果保护代码中发生异常,异常被抛给第一个 catch 块。

如果抛出异常的数据类型与 ExceptionType1 匹配,它在这里就会被捕获。

如果不匹配,它会被传递给第二个 catch 块。

如此,直到异常被捕获或者通过所有的 catch 块。

实例

该实例展示了怎么使用多重 try/catch。

  1. try
  2. {
  3.    file = new FileInputStream(fileName);
  4.    x = (byte) file.read();
  5. }catch(IOException i)
  6. {
  7.    i.printStackTrace();
  8.    return -1;
  9. }catch(FileNotFoundException f) //Not valid!
  10. {
  11.    f.printStackTrace();
  12.    return -1;
  13. }

throws/throw关键字:

如果一个方法没有捕获一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。

也可以使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。

下面方法的声明抛出一个 RemoteException 异常:

  1. import java.io.*;
  2. public class className
  3. {
  4.    public void deposit(double amount) throws RemoteException
  5.    {
  6.       // Method implementation
  7.       throw new RemoteException();
  8.    }
  9.    //Remainder of class definition
  10. }

一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。

例如,下面的方法声明抛出 RemoteException 和 InsufficientFundsException:

  1. import java.io.*;
  2. public class className
  3. {
  4.    public void withdraw(double amount) throws RemoteException,
  5.                               InsufficientFundsException
  6.    {
  7.        // Method implementation
  8.    }
  9.    //Remainder of class definition
  10. }


上一篇:Java数据类型转换下一篇:Java 继承

Archiver|手机版|小黑屋|小白教程 ( 粤ICP备20019910号 )

GMT+8, 2024-11-24 13:51 , Processed in 0.026249 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

返回顶部