Avoid calls to System.exit() and throw an exception instead
The exception is caught in Main and System.exit() is called. Bug: 413522 Change-Id: Ibe68f7104d4fd55b832000a7840c07a169e7dd58 Signed-off-by: Guillaume Nodet <gnodet@gmail.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
This commit is contained in:
parent
c0574fe680
commit
977596b209
|
@ -54,6 +54,8 @@
|
||||||
public class Die extends RuntimeException {
|
public class Die extends RuntimeException {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
private boolean aborted;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct a new message explaining what has gone wrong.
|
* Construct a new message explaining what has gone wrong.
|
||||||
*
|
*
|
||||||
|
@ -75,4 +77,25 @@ public Die(final String why) {
|
||||||
public Die(final String why, final Throwable cause) {
|
public Die(final String why, final Throwable cause) {
|
||||||
super(why, 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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,6 +123,8 @@ protected void run(final String[] argv) {
|
||||||
configureHttpProxy();
|
configureHttpProxy();
|
||||||
execute(argv);
|
execute(argv);
|
||||||
} catch (Die err) {
|
} catch (Die err) {
|
||||||
|
if (err.isAborted())
|
||||||
|
System.exit(1);
|
||||||
System.err.println(MessageFormat.format(CLIText.get().fatalError, err.getMessage()));
|
System.err.println(MessageFormat.format(CLIText.get().fatalError, err.getMessage()));
|
||||||
if (showStackTrace)
|
if (showStackTrace)
|
||||||
err.printStackTrace();
|
err.printStackTrace();
|
||||||
|
|
|
@ -227,7 +227,7 @@ protected void parseArguments(final String[] args) throws IOException {
|
||||||
} catch (CmdLineException err) {
|
} catch (CmdLineException err) {
|
||||||
if (!help) {
|
if (!help) {
|
||||||
this.errw.println(MessageFormat.format(CLIText.get().fatalError, err.getMessage()));
|
this.errw.println(MessageFormat.format(CLIText.get().fatalError, err.getMessage()));
|
||||||
System.exit(1);
|
throw die(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -267,7 +267,7 @@ public void printUsageAndExit(final String message, final CmdLineParser clp) thr
|
||||||
errw.println();
|
errw.println();
|
||||||
|
|
||||||
errw.flush();
|
errw.flush();
|
||||||
System.exit(1);
|
throw die(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -324,6 +324,16 @@ protected static Die die(final String why, final Throwable cause) {
|
||||||
return new Die(why, cause);
|
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) {
|
String abbreviateRef(String dst, boolean abbreviateRemote) {
|
||||||
if (dst.startsWith(R_HEADS))
|
if (dst.startsWith(R_HEADS))
|
||||||
dst = dst.substring(R_HEADS.length());
|
dst = dst.substring(R_HEADS.length());
|
||||||
|
|
Loading…
Reference in New Issue