diff --git a/src/main/java/com/github/zafarkhaja/semver/ParseException.java b/src/main/java/com/github/zafarkhaja/semver/ParseException.java index f2966c8..6a9eb7c 100644 --- a/src/main/java/com/github/zafarkhaja/semver/ParseException.java +++ b/src/main/java/com/github/zafarkhaja/semver/ParseException.java @@ -31,6 +31,13 @@ package com.github.zafarkhaja.semver; */ public class ParseException extends RuntimeException { + /** + * Constructs a {@code ParseException} instance with no error message. + */ + public ParseException() { + super(); + } + /** * Constructs a {@code ParseException} instance with an error message. * @@ -41,9 +48,30 @@ public class ParseException extends RuntimeException { } /** - * Constructs a {@code ParseException} instance with no error message. + * Constructs a {@code ParseException} instance with an error message + * and the cause exception. + * + * @param message the error message + * @param cause an exception that caused this exception */ - public ParseException() { + public ParseException(String message, UnexpectedCharacterException cause) { + super(message); + initCause(cause); + } + /** + * Returns the string representation of this exception. + * + * @return the string representation of this exception + */ + @Override + public String toString() { + Throwable cause = getCause(); + String msg = getMessage(); + if (msg != null) { + msg += ((cause != null) ? " (" + cause.toString() + ")" : ""); + return msg; + } + return ((cause != null) ? cause.toString() : ""); } } diff --git a/src/main/java/com/github/zafarkhaja/semver/expr/UnexpectedTokenException.java b/src/main/java/com/github/zafarkhaja/semver/expr/UnexpectedTokenException.java index 436a4e8..44973fd 100644 --- a/src/main/java/com/github/zafarkhaja/semver/expr/UnexpectedTokenException.java +++ b/src/main/java/com/github/zafarkhaja/semver/expr/UnexpectedTokenException.java @@ -66,7 +66,10 @@ public class UnexpectedTokenException extends ParseException { */ @Override public String toString() { - String message = String.format("Unexpected token '%s'", unexpected); + String message = String.format( + "Unexpected token '%s'", + unexpected + ); if (expected.length > 0) { message += String.format( ", expecting '%s'", diff --git a/src/main/java/com/github/zafarkhaja/semver/util/UnexpectedElementException.java b/src/main/java/com/github/zafarkhaja/semver/util/UnexpectedElementException.java index 2f1ae31..f7bcaa4 100644 --- a/src/main/java/com/github/zafarkhaja/semver/util/UnexpectedElementException.java +++ b/src/main/java/com/github/zafarkhaja/semver/util/UnexpectedElementException.java @@ -84,7 +84,10 @@ public class UnexpectedElementException extends RuntimeException { */ @Override public String toString() { - String message = String.format("Unexpected element '%s'", unexpected); + String message = String.format( + "Unexpected element '%s'", + unexpected + ); if (expected.length > 0) { message += String.format( ", expecting '%s'",