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

Thejas M Nair commented on PIG-1612:
------------------------------------

bq. Based on your example, it looks like the resulting error message is a 
concatenation of the higher level exception that claimed it was the "right" one 
and the lowest message. Is that right?

The decision to concatenate the message from the 'cause' exception would be 
taken by the higher level exception. In this case it happens to do that . What 
is printed is the message of the exception that is selected as most appropriate 
to be shown to user.

bq. What happens when multiple exceptions in the stack claim to be "right". Do 
we concatenate their messages or take the highest one in the stack?

When an exception has this flag set, the assumption is that it has the right 
level of information that user needs. So in this case the highest one in stack 
that claims to be right is picked.





> error reporting: PigException needs to have a way to indicate that its 
> message is appropriate for user
> ------------------------------------------------------------------------------------------------------
>
>                 Key: PIG-1612
>                 URL: https://issues.apache.org/jira/browse/PIG-1612
>             Project: Pig
>          Issue Type: Improvement
>            Reporter: Thejas M Nair
>            Assignee: Laukik Chitnis
>             Fix For: 0.9.0
>
>         Attachments: PIG-1612-2.patch
>
>
> The error message printed to the user by pig is the message from the 
> exception that is the 'root cause' from the chain of getCause() of exception 
> that has been thrown. But often the 'root cause' exception does not have 
> enough context that would make for a better error message. It should be 
> possible for a PigException to indicate to the code that determines the error 
> message that its getMessage() string should be used instead of that of the 
> 'cause' exception.
> The following code in LogUtils.java is used to determine the exception that 
> is the 'root cause' -
> {code}
>     public static PigException getPigException(Throwable top) {
>         Throwable current = top;
>         Throwable pigException = top;
>         while (current != null && current.getCause() != null){
>             current = current.getCause();
>             if((current instanceof PigException) && 
> (((PigException)current).getErrorCode() != 0)) {
>                 pigException = current;
>             }
>         }
>         return (pigException instanceof PigException? 
> (PigException)pigException : null);
>         
>     }
> {code}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to