[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