[
https://issues.apache.org/jira/browse/ONAMI-88?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13618021#comment-13618021
]
Mikhail Mazursky commented on ONAMI-88:
---------------------------------------
I experimented a bit with catching RuntimeException and wrapping it in
ProvisionException vs just letting exception propagate. I used existing code in
UUIDConverter as a testcase. So, the current behaviour (catch&wrap) results in
this output (i obused a test in other project for experiments - don't take it
into account):
com.google.inject.ConfigurationException: Guice configuration errors:
1) String value 'abcasd' is not a valid UUID
while locating java.util.UUID annotated with
@com.google.inject.name.Named(value=a)
for field at
org.apache.onami.converters.net.URLConverterTestCase.u(URLConverterTestCase.java:43)
while locating org.apache.onami.converters.net.URLConverterTestCase
1 error
at
com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1004)
[...]
Caused by: java.lang.IllegalArgumentException: Invalid UUID string: abcasd
at java.util.UUID.fromString(UUID.java:194)
[...]
If we don't catch - this is the output:
com.google.inject.ConfigurationException: Guice configuration errors:
1) Error converting 'abcasd' (bound at
org.apache.onami.converters.net.URLConverterTestCase$1.configure(URLConverterTestCase.java:54))
to java.util.UUID
using java.util.UUID which matches only(java.util.UUID) (bound at
org.apache.onami.converters.core.AbstractConverter.configure(AbstractConverter.java:44)).
Reason: java.lang.IllegalArgumentException: Invalid UUID string: abcasd
while locating java.util.UUID annotated with
@com.google.inject.name.Named(value=a)
for field at
org.apache.onami.converters.net.URLConverterTestCase.u(URLConverterTestCase.java:43)
while locating org.apache.onami.converters.net.URLConverterTestCase
1 error
at
com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1004)
[...]
Caused by: java.lang.IllegalArgumentException: Invalid UUID string: abcasd
at java.util.UUID.fromString(UUID.java:194)
[...]
As you can see, wrapping in ProvisionException gives us less information -
apparently Guice treats ProvisionException somehow not like other exceptions. I
propose to get rid of wrapping in ProvisionException and wrap only checked
exceptions in RuntimeException where necessary. WDYT?
> Consistent policy for exception handling
> ----------------------------------------
>
> Key: ONAMI-88
> URL: https://issues.apache.org/jira/browse/ONAMI-88
> Project: Apache Onami
> Issue Type: Improvement
> Components: configuration
> Affects Versions: configuration-6.3.0
> Reporter: Mikhail Mazursky
> Priority: Minor
>
> No consistent policy for exception handling - for example
> SQLTimestampConverter catches Throwable and rethrows it as ProvisionException
> but CharsetConverter do not catch anything at all. Should we catch at all or
> Guice handles this itself?
> I guess we should rethrow only checked exceptions. Also no need to catch
> Errors in such places in any case (catch Exception vs Throwable).
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira