In most cases, I'd say that Errors shouldn't even be caught and rethrown, personally -- something like an OOME doesn't need additional object creation, for instance.<br><br><div class="gmail_quote">On Fri, Apr 4, 2008 at 1:55 PM, Mark Proctor <<a href="mailto:mproctor@codehaus.org">mproctor@codehaus.org</a>> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div bgcolor="#ffffff" text="#000000">
I don't see a problem with Throwable there? We rethrow again, adding in
some additional information. I found that just catching Exception
didn't work as you could get verification errors and other stuch
things. If you look at the context of that that method is doing too,
its using reflection to instantiate a class.<br>
<br>
Mark<br>
Zoltan Farkas wrote:
<blockquote type="cite"><div><div></div><div class="Wj3C7c">
<div>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">I was browsing through
the drools source code </span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">I am not a fan of seeing
catching Throwable in any java code
…</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">I see this in class
org.drools.util.ClassUtils:</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> /**</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> * This method will
attempt to
create an instance of the specified Class. It uses</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> * a syncrhonized
HashMap to cache
the reflection Class lookup.</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> * @param className</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> * @return</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> */</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> public static Object
instantiateObject(String className) {</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> Class cls =
(Class) ClassUtils.classes.get( className );</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> if ( cls == null
) {</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">
try {</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">
cls = Class.forName( className );</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">
ClassUtils.classes.put(
className, cls );</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">
} catch ( Throwable e ) {</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">
throw new RuntimeException("Unable to load class '" + className +
"'", e );</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">
} </span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> }</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> Object object =
null;</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> try {</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">
object =
cls.newInstance();
</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> } catch (
Throwable e ) {</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">
throw new RuntimeException("Unable to instantiate object for class '"
+ className + "'", e );</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> } </span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> return object;</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> }</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">I believe this masks
important errors where the application
should not continue to run and it would be preferable to crash…</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">--zoly</span></font></p>
<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;"> </span></font></p>
</div>
</div></div><pre><hr size="4" width="90%">
_______________________________________________
rules-dev mailing list
<a href="mailto:rules-dev@lists.jboss.org" target="_blank">rules-dev@lists.jboss.org</a>
<a href="https://lists.jboss.org/mailman/listinfo/rules-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-dev</a>
</pre>
</blockquote>
<br>
</div>
<br>_______________________________________________<br>
rules-dev mailing list<br>
<a href="mailto:rules-dev@lists.jboss.org">rules-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-dev</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>Geoffrey Wiseman<br>