@Override protected Integer parse(String argument) throws NumberFormatException, CmdLineException { int value = Integer.parseInt(argument); Range range = setter.asAnnotatedElement().getAnnotation(Range.class); if (range != null && value != Math.min(Math.max(value, range.min()), range.max())) { throw new NumberFormatException(); } return value; }
private void handleException(ParserExceptionWithSource exception) { ParserException e = exception.getCause(); String sourceCode = exception.getSourceCode(); int lineOffset = exception.getSource().getLine(); String sourceInfo = String.format("%s:%d:%d", e.getFile(), e.getLine(), e.getColumn()); int start = skipLines(sourceCode, e.getLine() - lineOffset); int end = nextLineTerminator(sourceCode, start); String offendingLine = sourceCode.substring(start, end); String marker = Strings.repeat('.', Math.max(e.getColumn() - 1, 0)) + '^'; console.printf("%s %s: %s%n", sourceInfo, e.getType(), e.getFormattedMessage()); console.printf("%s %s%n", sourceInfo, offendingLine); console.printf("%s %s%n", sourceInfo, marker); printStackTrace(e); }
private static void printStackTrace(PrintWriter writer, Throwable e, int maxDepth) { final int depth = Math.max(maxDepth, 0); new TruncatedThrowable(e, depth).printStackTrace(writer); }
private static void printStackTrace(PrintStream stream, Throwable e, int maxDepth) { final int depth = Math.max(maxDepth, 0); new TruncatedThrowable(e, depth).printStackTrace(stream); }