`

[#0x001D] first catch

    博客分类:
  • Java
 
阅读更多

  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*/
分享到:
评论

相关推荐

    PHP PDO操作总结

    } catch (PDOException $e) { die('Could not connect to the database: ' . $e); } ``` ### 0x03 基本查询 PDO提供了`query()`和`exec()`方法执行SQL查询。`query()`用于执行SELECT查询并返回结果集,`exec()`...

    java程序判断文件编码的类型

    } catch (Exception e) { e.printStackTrace(); } return charset; } ``` #### 代码解析 这段代码通过读取文件的前三个字节来判断文件的编码类型。如果文件是UTF-8编码,则会包含BOM(字节顺序标记),即`EF BB...

    Java判断文件的编码

    } catch (Exception e) { e.printStackTrace(); } return charset; } ``` ### 代码详解 1. **初始化与异常处理**: - 创建一个`BufferedInputStream`对象,以提高读取效率。 - 使用`mark()`方法标记当前位置...

    【。net 专业】 面试题

    - **解析**: 编译不能通过,因为`FileNotFoundException`是`IOException`的子类,因此`IOException`的catch块应该位于`FileNotFoundException`之前。 #### 二十二、实现`IDisposable`接口的类的操作 - **操作**: `...

    EmvReader Java Code

    // 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);/...

    GifDecoder

    * @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 ...

    javajdk1.7环境

    1. **多 catches 语句**:允许在一个try-catch块中捕获多种类型的异常,用管道符(|)分隔,提高了代码的可读性。 2. **字符串in switch**:现在可以在switch语句中直接使用字符串,使得处理枚举值或常量时更为方便...

    JAVA习题集(含答案) (2).pdf

    1992年10月,随着互联网的崛起,Green小组升级为First Person公司,将Oak技术转向Web,并改名为Java。1995年5月,Sun Microsystems正式发布了Java和HotJava浏览器,标志着Java的正式问世。随后,Netscape Navigator...

    Google C++ Style Guide(Google C++编程规范)高清PDF

    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 ...

    C#浏览器编程,学习使用

    public uint WM_COMMAND = 0x0111; //***********************************************// // // // 常用变量声明 // // // //***********************************************// int LianJie_btn_Cishu = 0...

Global site tag (gtag.js) - Google Analytics