/* * * * Copyright 1990-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt). * * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. */ package com.sun.cldc.isolate; import java.io.PrintStream; /** * An exception thrown when the implementation is unable to start * execution of a new isolate due to an error or exceptional condition * in the bootstrap code for the new isolate (i.e., before the * application starts). Generally, this exception implies the new * isolate was misconfigured, and the misconfiguration was detected * when the isolate was initializing (either during the {@linkplain * Isolate#Isolate constructor call} or {@link Isolate#start * Isolate.start invocation}). If the underlying misconfiguration resulted in an * exception in the new isolate, the accessors for the remote exception * information will provide the details. If not, those methods will * all return <code>null</code>. * * <p> Any errors or exceptions thrown by application code in the new * isolate will be handled by the default {@link * ThreadGroup#uncaughtException ThreadGroup.uncaughtException} and * will not manifest as an <code>IsolateStartupException</code> in the creating * isolate. * * <p>Because any nested exception occurred in a remote * isolate, the exception cannot be directly {@linkplain * java.lang.Throwable#initCause chained} (for example, the exception * type may be available in the creator). However, the information * about the remote exception is available from the {@link * #getRemoteName}, {@link #getRemoteMessage} methods. * * <p>The detail message in an <code>IsolateStartupException</code> will * be the <code>toString</code> string of the original exception in the * remote isolate, if available. The backtrace associated with an * <code>IsolateStartupException</code> will be from the current thread's * stack. * * @see Isolate#Isolate * @see Isolate#start **/ public class IsolateStartupException extends Exception { /** * Constructs an <code>IsolateStartupException</code> with no specified detail * message and <code>null</code> remote exception information. */ public IsolateStartupException() { } /** * Constructs an <code>IsolateStartupException</code> with specified detail * message and <code>null</code> remote exception information. */ public IsolateStartupException(String detail) { super(detail); } /** * Returns either the name of the exception type of the remote exception * or <code>null</code> if there was no reportable remote Java exception. * * @return the name of the exception type of the remote exception */ public String getRemoteName() { return null; } /** * Returns the detail message string for the remote exception (which * may be <code>null</code> even if a remote exception occured). * * @see #getRemoteName * @return the detail message string for the remote exception. */ public String getRemoteMessage() { return null; } /* * Prints the remote exception name, message, and stack trace, like * {@link java.lang.Throwable#printStackTrace()} does for the local * exception. If no exception information is available, nothing * will be printed. */ public void printRemoteStackTrace() { } /** * Prints the remote exception like {@link #printRemoteStackTrace()} * to the given <code>PrintStream</code>. * If no exception information is available, nothing * will be printed. */ public void printRemoteStackTrace(PrintStream ps) { } }