[jira] [Created] (CHAIN-67) Refactor of explicit Exception throws to a RuntimeException type

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Created] (CHAIN-67) Refactor of explicit Exception throws to a RuntimeException type

ASF GitHub Bot (Jira)
Refactor of explicit Exception throws to a RuntimeException type
----------------------------------------------------------------

                 Key: CHAIN-67
                 URL: https://issues.apache.org/jira/browse/CHAIN-67
             Project: Commons Chain
          Issue Type: Improvement
    Affects Versions: 2.0
            Reporter: Elijah Zupancic
            Priority: Minor
             Fix For: 2.0


As I've been working on the examples and the documentation for v2 of
chain, I've noticed that the API for exception handling of Command and
Chain is clunky.

When executing a command like:
{code:java}
       ProfileContext context = new ProfileContext();
       Command<String, Object, ProfileContext> command = new ProfileCheck();

       try {
           command.execute(context);
       }
       catch (Exception e) {
           throw new RuntimeException(e);
       }
{code}
The user of chain has to explicitly catch Exception. If the desire was
to catch the most base error and force the user to deal with it, why
aren't we using Throwable? Anyways, this design leads to less than
elegant code and since we will be breaking the API in v2, I would like
to suggest a different approach.

I suggest that Command and Chain should throw a custom exception class
called ChainException that inherits from RuntimeException. And in the
CommandBase, ChainBase we wrap the catch of Exception in this runtime
exception. Moreover, we would attach to ChainException some optional
debug information about the Context invoked when the exception was
encountered.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
Reply | Threaded
Open this post in threaded view
|

[jira] [Updated] (CHAIN-67) Refactor of explicit Exception throws to a RuntimeException type

ASF GitHub Bot (Jira)

     [ https://issues.apache.org/jira/browse/CHAIN-67?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Elijah Zupancic updated CHAIN-67:
---------------------------------

    Attachment: chain-67.diff

Patch for adding a new exception type called ChainException.
               

> Refactor of explicit Exception throws to a RuntimeException type
> ----------------------------------------------------------------
>
>                 Key: CHAIN-67
>                 URL: https://issues.apache.org/jira/browse/CHAIN-67
>             Project: Commons Chain
>          Issue Type: Improvement
>    Affects Versions: 2.0
>            Reporter: Elijah Zupancic
>            Priority: Minor
>              Labels: exception-handling
>             Fix For: 2.0
>
>         Attachments: chain-67.diff
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> As I've been working on the examples and the documentation for v2 of
> chain, I've noticed that the API for exception handling of Command and
> Chain is clunky.
> When executing a command like:
> {code:java}
>        ProfileContext context = new ProfileContext();
>        Command<String, Object, ProfileContext> command = new ProfileCheck();
>        try {
>            command.execute(context);
>        }
>        catch (Exception e) {
>            throw new RuntimeException(e);
>        }
> {code}
> The user of chain has to explicitly catch Exception. If the desire was
> to catch the most base error and force the user to deal with it, why
> aren't we using Throwable? Anyways, this design leads to less than
> elegant code and since we will be breaking the API in v2, I would like
> to suggest a different approach.
> I suggest that Command and Chain should throw a custom exception class
> called ChainException that inherits from RuntimeException. And in the
> CommandBase, ChainBase we wrap the catch of Exception in this runtime
> exception. Moreover, we would attach to ChainException some optional
> debug information about the Context invoked when the exception was
> encountered.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
Reply | Threaded
Open this post in threaded view
|

[jira] [Commented] (CHAIN-67) Refactor of explicit Exception throws to a RuntimeException type

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

    [ https://issues.apache.org/jira/browse/CHAIN-67?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13222201#comment-13222201 ]

Simone Tripodi commented on CHAIN-67:
-------------------------------------

Patch looks more than good, I am going to apply it, thanks!
               

> Refactor of explicit Exception throws to a RuntimeException type
> ----------------------------------------------------------------
>
>                 Key: CHAIN-67
>                 URL: https://issues.apache.org/jira/browse/CHAIN-67
>             Project: Commons Chain
>          Issue Type: Improvement
>    Affects Versions: 2.0
>            Reporter: Elijah Zupancic
>            Priority: Minor
>              Labels: exception-handling
>             Fix For: 2.0
>
>         Attachments: chain-67.diff
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> As I've been working on the examples and the documentation for v2 of
> chain, I've noticed that the API for exception handling of Command and
> Chain is clunky.
> When executing a command like:
> {code:java}
>        ProfileContext context = new ProfileContext();
>        Command<String, Object, ProfileContext> command = new ProfileCheck();
>        try {
>            command.execute(context);
>        }
>        catch (Exception e) {
>            throw new RuntimeException(e);
>        }
> {code}
> The user of chain has to explicitly catch Exception. If the desire was
> to catch the most base error and force the user to deal with it, why
> aren't we using Throwable? Anyways, this design leads to less than
> elegant code and since we will be breaking the API in v2, I would like
> to suggest a different approach.
> I suggest that Command and Chain should throw a custom exception class
> called ChainException that inherits from RuntimeException. And in the
> CommandBase, ChainBase we wrap the catch of Exception in this runtime
> exception. Moreover, we would attach to ChainException some optional
> debug information about the Context invoked when the exception was
> encountered.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
Reply | Threaded
Open this post in threaded view
|

[jira] [Resolved] (CHAIN-67) Refactor of explicit Exception throws to a RuntimeException type

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

     [ https://issues.apache.org/jira/browse/CHAIN-67?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Simone Tripodi resolved CHAIN-67.
---------------------------------

    Resolution: Fixed
      Assignee: Simone Tripodi

Hi Elijah,
patch applied, see r1297032 for more details!
I just adjusted minor signatures to get advantage from generics and avoid string concatenation, but the rest is OK ;)

Thanks for contributing!
               

> Refactor of explicit Exception throws to a RuntimeException type
> ----------------------------------------------------------------
>
>                 Key: CHAIN-67
>                 URL: https://issues.apache.org/jira/browse/CHAIN-67
>             Project: Commons Chain
>          Issue Type: Improvement
>    Affects Versions: 2.0
>            Reporter: Elijah Zupancic
>            Assignee: Simone Tripodi
>            Priority: Minor
>              Labels: exception-handling
>             Fix For: 2.0
>
>         Attachments: chain-67.diff
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> As I've been working on the examples and the documentation for v2 of
> chain, I've noticed that the API for exception handling of Command and
> Chain is clunky.
> When executing a command like:
> {code:java}
>        ProfileContext context = new ProfileContext();
>        Command<String, Object, ProfileContext> command = new ProfileCheck();
>        try {
>            command.execute(context);
>        }
>        catch (Exception e) {
>            throw new RuntimeException(e);
>        }
> {code}
> The user of chain has to explicitly catch Exception. If the desire was
> to catch the most base error and force the user to deal with it, why
> aren't we using Throwable? Anyways, this design leads to less than
> elegant code and since we will be breaking the API in v2, I would like
> to suggest a different approach.
> I suggest that Command and Chain should throw a custom exception class
> called ChainException that inherits from RuntimeException. And in the
> CommandBase, ChainBase we wrap the catch of Exception in this runtime
> exception. Moreover, we would attach to ChainException some optional
> debug information about the Context invoked when the exception was
> encountered.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira