Changeset 10266


Ignore:
Timestamp:
10/28/05 16:45:10 (16 years ago)
Author:
piso
Message:

Work in progress: signal JavaException? where applicable.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/Java.java

    r10255 r10266  
    33 *
    44 * Copyright (C) 2002-2005 Peter Graves, Andras Simon
    5  * $Id: Java.java,v 1.58 2005-10-28 13:01:22 piso Exp $
     5 * $Id: Java.java,v 1.59 2005-10-28 16:45:10 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    4343            throws ConditionThrowable
    4444        {
    45             registeredExceptions.put(classForName(className.getStringValue()),symbol);
     45            // FIXME Verify that EXCEPTION-NAME designates a subclass of Throwable.
     46            // FIXME Verify that CONDITION-SYMBOL is a symbol that names a condition.
     47            // FIXME Signal a continuable error if the exception is already registered.
     48            registeredExceptions.put(classForName(className.getStringValue()),
     49                                     symbol);
    4650            return T;
    4751        }
    4852    };
    49 
    5053
    5154    // ### jclass name-or-class-ref => class-ref
     
    350353    };
    351354
    352     // ### jnew
    353     // jnew constructor &rest args
     355    // ### jnew constructor &rest args
    354356    private static final Primitive JNEW = new Primitive("jnew", PACKAGE_JAVA, true,
    355357                                                        "constructor &rest args")
     
    375377            }
    376378            catch (Throwable t) {
    377                 Class tClass = t.getClass();
    378                 if (registeredExceptions.containsKey(tClass)) {
    379                     signal((Symbol)registeredExceptions.get(tClass), new SimpleString(getMessage(t)));
    380                 }
    381                 signal(new LispError(getMessage(t)));
     379                Class throwableClass = t.getClass();
     380                if (registeredExceptions.containsKey(throwableClass)) {
     381                    signal((Symbol)registeredExceptions.get(throwableClass), new SimpleString(getMessage(t)));
     382                }
     383                signal(new JavaException(t));
    382384            }
    383385            // Not reached.
     
    403405            }
    404406            catch (Throwable t) {
    405                 signal(new LispError(getMessage(t)));
     407                signal(new JavaException(t));
    406408            }
    407409            // Not reached.
     
    545547        }
    546548        catch (Throwable t) {
    547             Class tClass = t.getClass();
    548             if (registeredExceptions.containsKey(tClass)) {
    549                 signal((Symbol)registeredExceptions.get(tClass),
     549            Class throwableClass = t.getClass();
     550            if (registeredExceptions.containsKey(throwableClass)) {
     551                signal((Symbol)registeredExceptions.get(throwableClass),
    550552                       new SimpleString(getMessage(t)));
    551553            }
    552             signal(new LispError(getMessage(t)));
     554            signal(new JavaException(t));
    553555        }
    554556        // Not reached.
Note: See TracChangeset for help on using the changeset viewer.