·
Can an exception be rethrown in Java?
d
Yes.
s Consider the following example:
static class FirstException extends Exception { } static class SecondException extends Exception { } public void rethrowException(String exceptionName) throws Exception { try { if (exceptionName.equals("First")) { throw new FirstException(); } else { throw new SecondException(); } } catch (Exception e) { throw e; } }
This examples's
try
block could throw either FirstException
or SecondException
. Suppose you want to specify these exception types in the throws
clause of the rethrowException
method declaration. In releases prior to Java SE 7, you cannot do so. Because the exception parameter of the catch
clause, e
, is type Exception
, and the catch block rethrows the exception parameter e
, you can only specify the exception type Exception
in the throws
clause of the rethrowException
method declaration.
However, in Java SE 7, you can specify the exception types
FirstException
and SecondException
in the throws
clause in the rethrowException
method declaration. The Java SE 7 compiler can determine that the exception thrown by the statementthrow
e
must have come from the try
block, and the only exceptions thrown by the try
block can be FirstException
and SecondException
. Even though the exception parameter of the catch
clause, e
, is type Exception
, the compiler can determine that it is an instance of either FirstException
or SecondException
:public void rethrowException(String exceptionName) throws FirstException, SecondException { try { // ... } catch (Exception e) { throw e; } }
No comments:
Post a Comment