From 4177daab2f54bdb20c71f623296a8bb32616fd12 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Thu, 13 Feb 2003 14:41:36 +0000 Subject: Initial version. --- sources/scalac/ApplicationError.java | 87 ++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 sources/scalac/ApplicationError.java (limited to 'sources/scalac/ApplicationError.java') diff --git a/sources/scalac/ApplicationError.java b/sources/scalac/ApplicationError.java new file mode 100644 index 0000000000..e689217eec --- /dev/null +++ b/sources/scalac/ApplicationError.java @@ -0,0 +1,87 @@ +/* ____ ____ ____ ____ ______ *\ +** / __// __ \/ __// __ \/ ____/ SOcos COmpiles Scala ** +** __\_ \/ /_/ / /__/ /_/ /\_ \ (c) 2002, LAMP/EPFL ** +** /_____/\____/\___/\____/____/ ** +** ** +** $Id$ +\* */ + +package scalac; + +import java.io.PrintStream; +import java.io.PrintWriter; + +import scalac.util.Debug; + +public class ApplicationError extends Error { + + //######################################################################## + // Private state + + private final Throwable cause; // !!! remove and use API 1.4 + + //######################################################################## + // Private interface + + private static String combine(String message, Object object) { + String string = Debug.show(object); + return message == null ? string : message + ": " + string; + } + + //######################################################################## + // ApplicationError constructors + + public ApplicationError() { + this((String)null, (Throwable)null); + } + + public ApplicationError(String message) { + this(message, (Throwable)null); + } + + public ApplicationError(Object object) { + this(null, object, null); + } + + public ApplicationError(Throwable cause) { + this((String)null, cause); + } + + public ApplicationError(String message, Object object) { + this(message, object, null); + } + + public ApplicationError(String message, Throwable cause) { + super(message); + this.cause = cause; + } + + public ApplicationError(Object object, Throwable cause) { + this(null, object, cause); + } + + public ApplicationError(String message, Object object, Throwable cause) { + this(combine(message, object), cause); + } + + //######################################################################## + // Throwable interface + + public void printStackTrace(PrintStream printer) { + super.printStackTrace(printer); + if (cause != null) { + printer.print("Caused by: "); + cause.printStackTrace(printer); + } + } + + public void printStackTrace(PrintWriter printer) { + super.printStackTrace(printer); + if (cause != null) { + printer.print("Caused by: "); + cause.printStackTrace(printer); + } + } + + //######################################################################## +} -- cgit v1.2.3