public class Die extends RuntimeException {
private static final long serialVersionUID = 1L;
+ private boolean aborted;
+
/**
* Construct a new message explaining what has gone wrong.
*
public Die(final String why, final Throwable cause) {
super(why, cause);
}
+
+ /**
+ * Construct a new exception reflecting the fact that the
+ * command execution has been aborted before running.
+ *
+ * @param aborted boolean indicating the fact the execution has been aborted
+ * @since 3.4
+ */
+ public Die(boolean aborted) {
+ this.aborted = aborted;
+ }
+
+ /**
+ * Check if this exception should cause the execution to be aborted.
+ *
+ * @return boolean indicating that the execution should be aborted
+ * @since 3.4
+ */
+ public boolean isAborted() {
+ return aborted;
+ }
}
} catch (CmdLineException err) {
if (!help) {
this.errw.println(MessageFormat.format(CLIText.get().fatalError, err.getMessage()));
- System.exit(1);
+ throw die(true);
}
}
errw.println();
errw.flush();
- System.exit(1);
+ throw die(true);
}
/**
return new Die(why, cause);
}
+ /**
+ * @param aborted
+ * boolean indicating that the execution has been aborted before running
+ * @return a runtime exception the caller is expected to throw
+ * @since 3.4
+ */
+ protected static Die die(boolean aborted) {
+ return new Die(aborted);
+ }
+
String abbreviateRef(String dst, boolean abbreviateRemote) {
if (dst.startsWith(R_HEADS))
dst = dst.substring(R_HEADS.length());