[
https://issues.apache.org/jira/browse/CURATOR-515?focusedWorklogId=811925&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-811925
]
ASF GitHub Bot logged work on CURATOR-515:
------------------------------------------
Author: ASF GitHub Bot
Created on: 25/Sep/22 14:47
Start Date: 25/Sep/22 14:47
Worklog Time Spent: 10m
Work Description: tisonkun closed pull request #308: CURATOR-515: Remove
use of deprecated Throwables method
URL: https://github.com/apache/curator/pull/308
Issue Time Tracking
-------------------
Worklog Id: (was: 811925)
Time Spent: 20m (was: 10m)
> Backgrounding CheckError
> -------------------------
>
> Key: CURATOR-515
> URL: https://issues.apache.org/jira/browse/CURATOR-515
> Project: Apache Curator
> Issue Type: Improvement
> Reporter: David Mollitor
> Assignee: Jordan Zimmerman
> Priority: Minor
> Time Spent: 20m
> Remaining Estimate: 0h
>
> This code is confusing to me:
>
> {code:java|title=Backgrounding.java}
> void checkError(Throwable e, Watching watching) throws Exception
> {
> if ( e != null )
> {
> if ( errorListener != null )
> {
> errorListener.unhandledError("n/a", e);
> }
> else if ( e instanceof Exception )
> {
> throw (Exception)e;
> }
> else
> {
> Throwables.propagate(e);
> }
> }
> }
> {code}
>
>
> [https://github.com/apache/curator/blob/master/curator-framework/src/main/java/org/apache/curator/framework/imps/Backgrounding.java#L123-L140]
> I *think* the code here is meaning to take a run-time Exception and wrap it
> in a checked Exception. However, that is not actually happening here.
> If the {{Throwable}} argument is an {{Exception}}, it is thrown as-is. Fair
> enough. However, if the {{Throwable}} is a {{RuntimeException}} it is also
> thrown here because {{RuntimeException}} is a sub-class of {{Exception}}. It
> is not turned into a checked exception. So, if the {{Throwable}} is not an
> {{Exception}}, the only other sub-class of {{Throwable}} is an {{Error}}. The
> call {{Throwables.propagate(e)}} will will see that it is an {{Error}} and
> simply throw it.
> [https://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html]
> [https://github.com/google/guava/blob/master/guava/src/com/google/common/base/Throwables.java#L132-L134]
> So, really, whatever the {{Throwable}} argument is, it is simply re-thrown.
> This code could be simplified to:
> {code:java|title=Backgrounding.java}
> void checkError(Throwable e, Watching watching) throws Exception
> {
> if ( e != null )
> {
> if ( errorListener != null )
> {
> errorListener.unhandledError("n/a", e);
> }
> else if ( e instanceof Exception )
> {
> throw (Exception)e;
> }
> else
> {
> throw (Error)e;
> }
> }
> }
> {code}
> Is this the intended behavior our should {{RuntimeException}} and {{Error}}
> be wrapped into a checked {{Error}}?
--
This message was sent by Atlassian Jira
(v8.20.10#820010)