package org.checkerframework.javacutil; /** * Handle errors detected in utility classes. By default, the error reporter throws a * RuntimeException, but clients of the utility library may register a handler to change the * behavior. For example, type checkers can direct errors to the * org.checkerframework.framework.source.SourceChecker class. */ public class ErrorReporter { protected static ErrorHandler handler = null; /** Register a handler to customize error reporting. */ public static void setHandler(ErrorHandler h) { handler = h; } /** * Log an error message and abort processing. Call this method instead of raising an exception. * * @param msg the error message to log */ public static void errorAbort(String msg) { if (handler != null) { handler.errorAbort(msg); } else { throw new RuntimeException(msg, new Throwable()); } } /** * Log an error message use {@link String#format(String, Object...)}} and abort processing. Call * this method instead of raising an exception. * * @param format a format string * @param args arguments to the format string */ public static void errorAbort(String format, Object... args) { String formattedMsg = String.format(format, args); if (handler != null) { handler.errorAbort(formattedMsg); } else { throw new RuntimeException(formattedMsg, new Throwable()); } } public static void errorAbort(String msg, Throwable cause) { if (handler != null) { handler.errorAbort(msg, cause); } else { throw new RuntimeException(msg, cause); } } }