[ 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