Class RegexUtil.CheckedPatternSyntaxException

java.lang.Object
java.lang.Throwable
java.lang.Exception
org.plumelib.util.RegexUtil.CheckedPatternSyntaxException
All Implemented Interfaces:
Serializable
Enclosing class:
RegexUtil

public static class RegexUtil.CheckedPatternSyntaxException extends Exception
A checked version of PatternSyntaxException.

This exception is useful when an illegal regex is detected but the contextual information to report a helpful error message is not available at the current depth in the call stack. By using a checked PatternSyntaxException the error must be handled up the call stack where a better error message can be reported.

Typical usage is:

 void myMethod(...) throws CheckedPatternSyntaxException {
   ...
   if (! isRegex(myString)) {
     throw new CheckedPatternSyntaxException(...);
   }
   ... Pattern.compile(myString) ...
 
Simply calling Pattern.compile would have a similar effect, in that PatternSyntaxException would be thrown at run time if myString is not a regular expression. There are two problems with such an approach. First, a client of myMethod might forget to handle the exception, since PatternSyntaxException is not checked. Also, the Regex Checker would issue a warning about the call to Pattern.compile that might throw an exception. The above usage pattern avoids both problems.
See Also:
  • Constructor Details

    • CheckedPatternSyntaxException

      public CheckedPatternSyntaxException(PatternSyntaxException pse)
      Constructs a new CheckedPatternSyntaxException equivalent to the given PatternSyntaxException.

      Consider calling this constructor with the result of RegexUtil.regexError(java.lang.String).

      Parameters:
      pse - the PatternSyntaxException to be wrapped
    • CheckedPatternSyntaxException

      public CheckedPatternSyntaxException(String desc, String regex, @org.checkerframework.checker.index.qual.GTENegativeOne int index)
      Constructs a new CheckedPatternSyntaxException.
      Parameters:
      desc - a description of the error
      regex - the erroneous pattern
      index - the approximate index in the pattern of the error, or -1 if the index is not known
  • Method Details

    • getDescription

      public String getDescription()
      Retrieves the description of the error.
      Returns:
      the description of the error
    • getIndex

      public int getIndex()
      Retrieves the error index.
      Returns:
      the approximate index in the pattern of the error, or -1 if the index is not known
    • getMessage

      @Pure public String getMessage(@GuardSatisfied RegexUtil.CheckedPatternSyntaxException this)
      Returns a multi-line string containing the description of the syntax error and its index, the erroneous regular-expression pattern, and a visual indication of the error index within the pattern.
      Overrides:
      getMessage in class Throwable
      Returns:
      the full detail message
    • getPattern

      public String getPattern()
      Retrieves the erroneous regular-expression pattern.
      Returns:
      the erroneous pattern