SyntaxException.java 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // Copyright (c) 2003 Per M.A. Bothner.
  2. // This is free software; for terms and warranty disclaimer see ./COPYING.
  3. package gnu.text;
  4. /** Used to signal a non-recoverable (fatal) syntax error.
  5. * Can also be used to signal a syntax error from embedded parsers,
  6. * such as an {@code eval} or {@code execute} method,
  7. * or well-formedness errors when reading an XML document.
  8. */
  9. public class SyntaxException extends RuntimeException
  10. {
  11. /** If non-null, an extra one-line message printed before the messages.
  12. * Can be used to provide extra context. */
  13. String header;
  14. /** One or more error messages that triggered this exception. */
  15. SourceMessages messages;
  16. public SyntaxException(SourceMessages messages)
  17. {
  18. this.messages = messages;
  19. }
  20. public SyntaxException(String header, SourceMessages messages)
  21. {
  22. this.header = header;
  23. this.messages = messages;
  24. }
  25. /** If non-null, an extra one-line message printed before the messages.
  26. * Can be used to provide extra context. */
  27. public final String getHeader() { return header; }
  28. /** Set the header returned by <code>getHeader</code>. */
  29. public final void setHeader(String header) { this.header = header; }
  30. public SourceMessages getMessages () { return messages; }
  31. public void printAll(java.io.PrintWriter out, int max)
  32. {
  33. if (header != null)
  34. out.println(header);
  35. messages.printAll(out, max);
  36. }
  37. public void clear()
  38. {
  39. messages.clear();
  40. }
  41. public int maxToPrint = 10;
  42. public String getMessage() {
  43. StringBuilder buffer = new StringBuilder();
  44. if (header != null)
  45. buffer.append(header);
  46. messages.printAll(buffer, maxToPrint);
  47. return buffer.toString().replace("\r\n", "\n");
  48. }
  49. }