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"); //这句为什么不执行,闷。
}
}
}
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"); //这句为什么不执行,闷。
}
}
}
那就会根本不同类型的异常由不同的异常处理块进行处理。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 块。