[
https://issues.apache.org/jira/browse/MIME4J-280?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16487044#comment-16487044
]
Dmitry Katsubo commented on MIME4J-280:
---------------------------------------
I will create a new pull request. However there are few more places in
exception handling which would be nice to fix. This is about throwing
{{ParseException}} without any message, for example in
[{{Builder.java:120}}|https://github.com/apache/james-mime4j/blob/master/dom/src/main/java/org/apache/james/mime4j/field/address/Builder.java#L120]
there is code like this:
{code}
if (n instanceof ASTphrase) {
name = buildString((ASTphrase) n, false);
} else {
throw new ParseException(); // <-- can this me more informative?
}
{code}
I suggest to replace such places with something more informative, e.g.
{code}
throw new ParseException("Address \"phrase\" is expected but got \"" + n +
"\"");
{code}
Any idea to make it more informative?
> Exception stack trace should include the underlying parser exception
> --------------------------------------------------------------------
>
> Key: MIME4J-280
> URL: https://issues.apache.org/jira/browse/MIME4J-280
> Project: James Mime4j
> Issue Type: Improvement
> Components: dom
> Affects Versions: 0.7.2
> Reporter: Dmitry Katsubo
> Priority: Trivial
>
> I think this is beneficial to be able to trace the exception back to JJTree
> parser, in particular I suggest to wrap {{TokenMgrError}} in corresponding
> places e.g. in the way it is shown in the following patch:
> {code}
> ---
> a/dom/src/main/jjtree/org/apache/james/mime4j/field/address/AddressListParser.jjt
> +++
> b/dom/src/main/jjtree/org/apache/james/mime4j/field/address/AddressListParser.jjt
> @@ -77,7 +77,7 @@
> parseAddressList0();
> return (ASTaddress_list) jjtree.rootNode();
> } catch (TokenMgrError tme) {
> - throw new ParseException(tme.getMessage());
> + throw new ParseException(tme);
> }
> }
>
> @@ -86,7 +86,7 @@
> parseAddress0();
> return (ASTaddress) jjtree.rootNode();
> } catch (TokenMgrError tme) {
> - throw new ParseException(tme.getMessage());
> + throw new ParseException(tme);
> }
> }
>
> @@ -95,7 +95,7 @@
> parseMailbox0();
> return (ASTmailbox) jjtree.rootNode();
> } catch (TokenMgrError tme) {
> - throw new ParseException(tme.getMessage());
> + throw new ParseException(tme);
> }
> }
>
> {code}
> If the community finds it useful, I can contribute to that.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)