@Override
	public void launch(GhidraApplicationLayout ghidraLayout, String[] params) {
		if (params.length <= 1) {
			printUsage();
			return;
		}
		layout = ghidraLayout;		// Save layout for when we need to initialize application
		boolean success = false;
		try {
			run(params);
			success = true;
		}
		catch (SAXException e1) {
			System.err.println("Error in server configuation data");
			System.err.println(e1.getMessage());
		}
		catch (InterruptedException e) {
			System.err.println("Command was interrupted");
			System.err.println(e.getMessage());
		}
		catch (SQLException e) {
			System.err.println("Error connecting to the database");
			System.err.println(e.getMessage());
		}
		catch (GeneralSecurityException e) {
			System.err.println("Error establishing server certificate");
			System.err.println(e.getMessage());
		}
		catch (IllegalArgumentException e) {
			System.err.println("Error in command line arguments");
			System.err.println(e.getMessage());
		}
		catch (Exception e) {
			System.err.println("Unexpected error");
			e.printStackTrace();
		}

		if (!success) {
			System.exit(1);
		}
	}
Runs the command specified by the given set of params.

@param params the parameters specifying the command
@throws IllegalArgumentException if invalid params have been specified
@throws Exception if there's an error during the operation
@throws CancelledException if processing is cancelled
Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/BSimControlLaunchable.java