private static void walk(String fileName, List<String> args) throws UserError, Throwable { try { Iterable<? extends StaticError> errors = IterUtil.empty(); try { eval(fileName, args, false); } catch (Throwable th) { // TODO FIXME what is the proper treatment of errors/exceptions etc.? if (th instanceof FortressException) { FortressException pe = (FortressException) th; if (pe.getStaticErrors() != null) errors = pe.getStaticErrors(); } if (th instanceof RuntimeException) throw (RuntimeException) th; if (th instanceof Error) throw (Error) th; throw new WrappedException(th, Debug.stackTraceOn()); } if (!IterUtil.isEmpty(errors)) { for (StaticError error : errors) { System.err.println(error); } System.exit(-1); } // If there are no errors, // all components will have been written to disk // by the CacheBasedRepository. } catch (StaticError e) { System.err.println(e); if (Debug.stackTraceOn()) { e.printStackTrace(); } System.exit(-1); } catch (RepositoryError e) { throw e; } catch (LabelException e) { System.err.println(e.getMessage()); if (Debug.stackTraceOn()) { e.printStackTrace(); } else { System.err.println(turnOnDebugMessage); } System.exit(1); } catch (FortressException e) { failureBoilerplate(e); System.exit(1); } }