try块里有异常抛出时,程序会进入第一个异常类型匹配的catch块执行,其他的catch块不执行。
注意这里说的“第一个匹配的异常类型”。我们知道,所有的异常类型都是extends Exception,所以catch (Exception e)可以catch所有的异常;也就是说,这里说的“异常类型匹配”包括向上转型。
同时,对基类异常的catch块会屏蔽其后的对其导出类异常的catch块,而且这个屏蔽只与catch块代码的位置有关系,如:
class MyException extends Exception
{
}
public class ExceptionTest
{
public static void main(String[] args)
{
try
{
throw new MyException();
}
catch (Exception e)
{
System.out.println("Catch an Exception: " + e.getClass().toString());
}
catch (MyException me)
{
System.out.println("Catch a MyException: " + me.getClass().toString());
}
}
}
//output: Compiling Error
/* 已捕捉到异常MyException*/
//when comment or delete the 'catch (MyException me)' block
//output:
/* Catch an Exception: class MyException*/
这里,catch (Exception e)就屏蔽了catch (MyException me)。但是,如果我们把catch (MyException me)置于catch (Exception e)之上,就不会有屏蔽。如:
class MyException extends Exception
{
}
public class ExceptionTest
{
public static void main(String[] args)
{
try
{
throw new MyException();
}
catch (MyException e)
{
System.out.println("Catch a MyException: " + e.getClass().toString());
}
catch (Exception e)
{
System.out.println("Catch an Exception: " + e.getClass().toString());
}
}
}
//output:
/* Catch a MyException: class MyException*/
分享到:
相关推荐
} catch (PDOException $e) { die('Could not connect to the database: ' . $e); } ``` ### 0x03 基本查询 PDO提供了`query()`和`exec()`方法执行SQL查询。`query()`用于执行SELECT查询并返回结果集,`exec()`...
} catch (Exception e) { e.printStackTrace(); } return charset; } ``` #### 代码解析 这段代码通过读取文件的前三个字节来判断文件的编码类型。如果文件是UTF-8编码,则会包含BOM(字节顺序标记),即`EF BB...
} catch (Exception e) { e.printStackTrace(); } return charset; } ``` ### 代码详解 1. **初始化与异常处理**: - 创建一个`BufferedInputStream`对象,以提高读取效率。 - 使用`mark()`方法标记当前位置...
- **解析**: 编译不能通过,因为`FileNotFoundException`是`IOException`的子类,因此`IOException`的catch块应该位于`FileNotFoundException`之前。 #### 二十二、实现`IDisposable`接口的类的操作 - **操作**: `...
// Use the first terminal try { iReader = Integer.parseInt( args[0] ); } catch( Exception e ) { System.out.println("#ERROR# Invalid reader index format '"+args[0]+"'" ); System.exit(3);/...
* @return BufferedImage containing first frame, or null if none. */ public BufferedImage getImage() { return getFrame(0); } /** * Gets the "Netscape" iteration count, if any. * A count of 0 ...
1. **多 catches 语句**:允许在一个try-catch块中捕获多种类型的异常,用管道符(|)分隔,提高了代码的可读性。 2. **字符串in switch**:现在可以在switch语句中直接使用字符串,使得处理枚举值或常量时更为方便...
1992年10月,随着互联网的崛起,Green小组升级为First Person公司,将Oak技术转向Web,并改名为Java。1995年5月,Sun Microsystems正式发布了Java和HotJava浏览器,标志着Java的正式问世。随后,Netscape Navigator...
Friends Exceptions Run-Time Type Information (RTTI) Casting Streams Preincrement and Predecrement Use of const Integer Types 64-bit Portability Preprocessor Macros 0 and NULL sizeof Boost C++0x ...
public uint WM_COMMAND = 0x0111; //***********************************************// // // // 常用变量声明 // // // //***********************************************// int LianJie_btn_Cishu = 0...