more precise exit/error codes v_0
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sun, 29 Dec 2013 14:50:10 +0100
branchv_0
changeset 95 714e4fac9cd0
parent 94 b9af501399ef
child 96 7ae30649b30b
more precise exit/error codes
java/sql-dk/src/info/globalcode/sql/dk/CLIStarter.java
--- a/java/sql-dk/src/info/globalcode/sql/dk/CLIStarter.java	Sat Dec 28 23:08:06 2013 +0100
+++ b/java/sql-dk/src/info/globalcode/sql/dk/CLIStarter.java	Sun Dec 29 14:50:10 2013 +0100
@@ -46,16 +46,20 @@
  */
 public class CLIStarter implements ConfigurationProvider {
 
+	public static final int EXIT_SUCCESS = 0; // doc:success
+	public static final int EXIT_UNEXPECTED_ERROR = 1; // doc:unexpected error (probably bug)
+	public static final int EXIT_SQL_ERROR = 3; // doc:SQL error
+	public static final int EXIT_CLI_PARSE_ERROR = 4; // doc:CLI options parse error
+	public static final int EXIT_CLI_VALIDATE_ERROR = 5; // doc:CLI options validation error
+	public static final int EXIT_CONFIGURATION_ERROR = 6; // doc:configuration error
+	public static final int EXIT_FORMATTING_ERROR = 7; // doc:formatting error
 	private static final Logger log = Logger.getLogger(CLIStarter.class.getName());
-	private static final int EXIT_SUCCESS = 0;
-	private static final int EXIT_EXPECTED_ERROR = 3;
-	private static final int EXIT_SQL_ERROR = 4;
 	private CLIOptions options;
 	private Configuration configuration;
 
 	public static void main(String[] args) {
 		log.log(Level.FINE, "Starting " + Constants.PROGRAM_NAME);
-		int exitCode = EXIT_EXPECTED_ERROR;
+		int exitCode;
 
 		if (args.length == 0) {
 			args = new String[]{CLIParser.Tokens.INFO_HELP};
@@ -72,6 +76,7 @@
 			exitCode = EXIT_SUCCESS;
 		} catch (CLIParserException e) {
 			log.log(Level.SEVERE, "Unable to parse CLI options", e);
+			exitCode = EXIT_CLI_PARSE_ERROR;
 		} catch (InvalidOptionsException e) {
 			log.log(Level.SEVERE, "Invalid CLI options", e);
 			for (InvalidOptionsException.OptionProblem p : e.getProblems()) {
@@ -80,13 +85,16 @@
 				r.setParameters(new Object[]{p.getDescription()});
 				log.log(r);
 			}
+			exitCode = EXIT_CLI_VALIDATE_ERROR;
 		} catch (ConfigurationException e) {
 			log.log(Level.SEVERE, "Configuration problem", e);
+			exitCode = EXIT_CONFIGURATION_ERROR;
 		} catch (SQLException e) {
 			log.log(Level.SEVERE, "SQL problem", e);
 			exitCode = EXIT_SQL_ERROR;
 		} catch (FormatterException e) {
 			log.log(Level.SEVERE, "Formatting problem", e);
+			exitCode = EXIT_FORMATTING_ERROR;
 		}
 
 		System.exit(exitCode);