[
https://issues.apache.org/jira/browse/HBASE-6639?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13440055#comment-13440055
]
Hiroshi Ikeda commented on HBASE-6639:
--------------------------------------
Constructor.newInstance() avoids this problem.
Class.newInstance() is an exceptional method, and I think in almost all cases
we must use try-catch to catch Exception, for example:
{code}
try {
instance = clazz.newInstance();
} catch(Exception e) {
...
}
{code}
See
http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#newInstance%28%29
For example you can fire any checked exceptions by the following code:
{code}
public class A {
public static void fire(Exception e) {
B.e = e;
try { B.class.newInstance(); }
catch (InstantiationException e1) {}
catch (IllegalAccessException e1) {}
}
public static class B {
static Exception e;
public B() throws Exception { throw e; }
}
}
{code}
> Class.newInstance() can throw any checked exceptions and must be encapsulated
> with catching Exception
> -----------------------------------------------------------------------------------------------------
>
> Key: HBASE-6639
> URL: https://issues.apache.org/jira/browse/HBASE-6639
> Project: HBase
> Issue Type: Bug
> Affects Versions: 0.94.1
> Reporter: Hiroshi Ikeda
> Priority: Minor
>
> There are some logics to call Class.newInstance() without catching Exception,
> for example, in the method CoprocessorHost.loadInstance().
> Class.newInstance() is declared to throw InstantiationException and
> IllegalAccessException but indeed the method can throw any checked exceptions
> without declaration.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira