异常的处理
来源:互联网 发布:淘宝旗舰店卖假货 编辑:程序博客网 时间:2024/06/04 20:02
一直以来,catch时子类在前,父类在后,两个都处理,但却。。。。。
import java.io.*; class BBB { public static void main(String args[]) { try { throw new IOException(); } catch (IOException q) { System.out.println("IOE"); } catch (Exception e) { System.out.println("Exception"); // 这句为什么不执行 } } }
回复:
catch住一个IOException 处理了 然后就退出try-catch语句块啊
都被 IOException 捕获了啊。假如你的代码中会抛出 IOException,也会抛出 SQLException 的话,
那就会根据不同类型的异常由不同的异常处理块进行处理。
try { ... ... } catch (IOException e1) { System.out.println("IOException"); } catch (SQLException e2) { System.out.println("SQLException"); }
异常只能被一个 catch 所捕获,因此越父类异常都应该写在子类异常的后面。
比如说,在普通的文件读写操作中,会同时抛出 FileNotFoundException 和 IOException,
经查询 API DOC 可以看出 IOException 是 FileNotFoundException 的父类异常。
因此写代码可以写成:
try { ... } catch (FileNotFoundException e1) { ... } catch (IOException e2) { ... }
但我们不能写成下面这样:
try { ... } catch (IOException e2) { ... } catch (FileNotFoundException e1) { ... }
因为如果在 try 中抛出 FileNotFoundException 的话,首先会被 IOException 的 catch 块所捕获,
FileNotFoundException 的 catch 块永远执行不到。
当然了,如果不需要在不同的异常 catch 块中写一些健壮性代码的话,FileNotFoundException 和
IOException 可以只使用 IOException catch 块,甚至可以直接使用 Exception 的 catch 块。
阅读全文
0 0
- C++ 异常处理:类的异常处理--异常处理类
- C++ 异常处理:类的异常处理
- C#的异常处理
- 异常处理的常见问题
- Java异常的处理
- 异常处理的技巧
- java的异常处理
- 异常的处理
- 统一的处理异常
- ruby的异常处理
- InvocationHandler 的异常处理
- java的异常处理
- ARM的异常处理
- JNI异常的处理
- oracle的异常处理
- java的异常处理
- 异常处理的问题
- C# 的异常处理
- 编码表
- Linux学习基础篇(十一)
- Matlab之print,fprint,fscanf,disp函数
- 三点顺序
- POJ 2622 Convex hull 笔记
- 异常的处理
- 02_BootStrap——入门程序
- 嵌入式操作系统FreeRTOS的原理与实现
- linux下蓝牙BLE(rtl8821)开发
- SQLite数据库---ListView控件之商品展示案例
- boost::less_than_comparable
- hdu 1885 C
- TCP通信
- EJB系列