In some cases the detailMessage field is null for ParseException (and inheriting exceptions) resulting in non-descriptive logging with SLF4J and Logback.
I have the following code sample:
private static final Logger LOGGER = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
try {
Version.valueOf("v0.0.1");
} catch (Exception e) {
LOGGER.error("Could not parse version", e);
}
}
I know that the leading v is the cause for this exception. However, the code above produces the following output:
15:59:12.485 [main] ERROR Main - Could not parse version
com.github.zafarkhaja.semver.UnexpectedCharacterException: null
at com.github.zafarkhaja.semver.VersionParser.consumeNextCharacter(VersionParser.java:516)
at com.github.zafarkhaja.semver.VersionParser.digits(VersionParser.java:448)
at com.github.zafarkhaja.semver.VersionParser.numericIdentifier(VersionParser.java:408)
at com.github.zafarkhaja.semver.VersionParser.parseVersionCore(VersionParser.java:285)
at com.github.zafarkhaja.semver.VersionParser.parseValidSemVer(VersionParser.java:255)
at com.github.zafarkhaja.semver.VersionParser.parseValidSemVer(VersionParser.java:195)
at com.github.zafarkhaja.semver.Version.valueOf(Version.java:265)
at Main.main(Main.java:10)
which is not very descriptive.
I think this could be fixed quite simply with the following addition to ParseException:
@Override
public String getMessage() {
if (super.getMessage() != null)
return super.getMessage();
return toString();
}
In some cases the
detailMessage
field is null forParseException
(and inheriting exceptions) resulting in non-descriptive logging withSLF4J
andLogback
.I have the following code sample:
I know that the leading
v
is the cause for this exception. However, the code above produces the following output:which is not very descriptive.
I think this could be fixed quite simply with the following addition to
ParseException
: