class CommandExecutorException extends RuntimeException {
    private final CommandExecutorResult commandExecutorResult;

    public CommandExecutorException(String message) {
        super(message);
        this.commandExecutorResult = null;
    }

    public CommandExecutorException(String message, CommandExecutorResult commandExecutorResult) {
        super(message);
        this.commandExecutorResult = commandExecutorResult;
    }

    public CommandExecutorResult getCommandExecutorResult() {
        return commandExecutorResult;
    }

    @Override
    public String getMessage() {<FILL_FUNCTION_BODY>}
}

        StringBuilder sb = new StringBuilder("[error] ");
        if (super.getMessage() != null) {
            sb.append(super.getMessage());
        }
        if (commandExecutorResult != null) {
            String stout = commandExecutorResult.getStandardOutput();
            if (stout != null && !stout.isEmpty()) {
                sb.append("\n[stout] ").append(stout);
            }
            String errorOutput = commandExecutorResult.getErrorOutput();
            if (errorOutput != null && !errorOutput.isEmpty()) {
                sb.append("\n[errout] ").append(errorOutput);
            }
        }
        return sb.toString();
    
<methods>public void <init>() ,public void <init>(java.lang.String) ,public void <init>(java.lang.Throwable) ,public void <init>(java.lang.String, java.lang.Throwable) <variables>static final long serialVersionUID