diff dwt/DWTException.d @ 71:295b29fc7d13

Renamed SWT to DWT
author Frank Benoit <benoit@tionex.de>
date Tue, 15 Jan 2008 06:44:34 +0100
parents dwt/SWTException.d@8cec8f536af3
children 5899e0b43e5d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dwt/DWTException.d	Tue Jan 15 06:44:34 2008 +0100
@@ -0,0 +1,146 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+module dwt.DWTException;
+
+import dwt.DWT;
+
+import tango.core.Exception;
+import tango.io.Stdout;
+
+/**
+ * This runtime exception is thrown whenever a recoverable error
+ * occurs internally in DWT. The message text and error code
+ * provide a further description of the problem. The exception
+ * has a <code>throwable</code> field which holds the underlying
+ * exception that caused the problem (if this information is
+ * available (i.e. it may be null)).
+ * <p>
+ * SWTExceptions are thrown when something fails internally,
+ * but DWT is left in a known stable state (eg. a widget call
+ * was made from a non-u/i thread, or there is failure while
+ * reading an Image because the source file was corrupt).
+ * </p>
+ *
+ * @see DWTError
+ */
+
+public class DWTException : TracedException {
+    /**
+     * The DWT error code, one of DWT.ERROR_*.
+     */
+    public int code;
+
+    /**
+     * The underlying throwable that caused the problem,
+     * or null if this information is not available.
+     */
+    public TracedException throwable;
+
+    //static final long serialVersionUID = 3257282552304842547L;
+
+/**
+ * Constructs a new instance of this class with its
+ * stack trace filled in. The error code is set to an
+ * unspecified value.
+ */
+public this () {
+    this (DWT.ERROR_UNSPECIFIED);
+}
+
+/**
+ * Constructs a new instance of this class with its
+ * stack trace and message filled in. The error code is
+ * set to an unspecified value.  Specifying <code>null</code>
+ * as the message is equivalent to specifying an empty string.
+ *
+ * @param message the detail message for the exception
+ */
+public this (char[] message) {
+    this (DWT.ERROR_UNSPECIFIED, message);
+}
+
+/**
+ * Constructs a new instance of this class with its
+ * stack trace and error code filled in.
+ *
+ * @param code the DWT error code
+ */
+public this (int code) {
+    this (code, DWT.findErrorText (code));
+}
+
+/**
+ * Constructs a new instance of this class with its
+ * stack trace, error code and message filled in.
+ * Specifying <code>null</code> as the message is
+ * equivalent to specifying an empty string.
+ *
+ * @param code the DWT error code
+ * @param message the detail message for the exception
+ */
+public this (int code, char[] message) {
+    super (message);
+    this.code = code;
+}
+
+/**
+ * Returns the underlying throwable that caused the problem,
+ * or null if this information is not available.
+ * <p>
+ * NOTE: This method overrides Throwable.getCause() that was
+ * added to JDK1.4. It is necessary to override this method
+ * in order for inherited printStackTrace() methods to work.
+ * </p>
+ * @return the underlying throwable
+ *
+ * @since 3.1
+ */
+public TracedException getCause() {
+    return throwable;
+}
+
+/**
+ *  Returns the string describing this DWTException object.
+ *  <p>
+ *  It is combined with the message string of the Throwable
+ *  which caused this DWTException (if this information is available).
+ *  </p>
+ *  @return the error message string of this DWTException object
+ */
+public char[] getMessage () {
+    if (throwable is null) return super.toString ();
+    return super.toString () ~ " (" ~ throwable.toString () ~ ")"; //$NON-NLS-1$ //$NON-NLS-2$
+}
+
+/**
+ * Outputs a printable representation of this exception's
+ * stack trace on the standard error stream.
+ * <p>
+ * Note: printStackTrace(PrintStream) and printStackTrace(PrintWriter)
+ * are not provided in order to maintain compatibility with CLDC.
+ * </p>
+ */
+public void printStackTrace () {
+    Stderr.formatln( "stacktrace follows (if feature compiled in)" );
+    foreach( msg; this ){
+        Stderr.formatln( "{}", msg );
+    }
+    if ( throwable !is null) {
+        Stderr.formatln ("*** Stack trace of contained exception ***"); //$NON-NLS-1$
+        foreach( msg; throwable ){
+            Stderr.formatln( "{}", msg );
+        }
+    }
+}
+
+}
+
+