[jboss-dev] throws Throwable

Jason T. Greene jason.greene at redhat.com
Wed May 6 17:35:44 EDT 2009


Carlo de Wolf wrote:
> Andrew Lee Rubinger wrote:
>> Jason T. Greene wrote:
>>> Max Rydahl Andersen wrote:
>>>>
>>>>
>>>> Tim Fox wrote:
>>>>> David M. Lloyd wrote:
>>>>>> On 05/05/2009 03:02 AM, Carlo de Wolf wrote:
>>>>>>> What's the use case for having a public method: 
>>>>>>> doSomething(Object someArgs...) throws Throwable ? 
>>>>>>
>>>>>> No valid use cases exist afaik.  Any method that throws Throwable 
>>>>>> should die, if it's within our power to kill it. 
>>>>> Declaring a method as "throws Throwable" forces the caller to 
>>>>> handle the exception even if the exception/error thrown is unchecked.
>>>> Then do throws RuntimeException
>>>>
>>>> Error's are *nonrecoverable* since they are OutOfMemory or hard VM 
>>>> errors.No client can ever recover sanely.
>>>
>>> One valid case for throwing Throwable is a generic invocation mechanism
>>> (interceptors, proxies, etc).
>>
>> Just because it's generic doesn't mean the caller can do anything 
>> about it.  In that case why not just "throws Exception"?
> As per javax.interceptor.InvocationContext.proceed().
> But InvocationHandler.invoke throws a Throwable, which I think is wrong.

IMO this is correct because the Java language allows user code to throw 
errors, and an interceptor should be able to throw any exception 
declared by the method it is emulating. The only alternative is to wrap 
it with a special exception that gets unwrapped, but this is just 
pointless copying.

-- 
Jason T. Greene
JBoss, a division of Red Hat



More information about the jboss-development mailing list