Changeset 10276


Ignore:
Timestamp:
10/29/05 18:48:31 (16 years ago)
Author:
asimon
Message:

Search for registered superclasses of exceptions in JCALL, JARRAY-SET,
JARRAY-REF-RAW and JSTATIC-RAW.

File:
1 edited

Legend:

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

    r10270 r10276  
    33 *
    44 * Copyright (C) 2002-2005 Peter Graves, Andras Simon
    5  * $Id: Java.java,v 1.61 2005-10-29 13:35:45 asimon Exp $
     5 * $Id: Java.java,v 1.62 2005-10-29 18:48:31 asimon Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    354354            catch (Throwable t) {
    355355                Class tClass = t.getClass();
    356                 if (registeredExceptions.containsKey(tClass)) {
    357                     signal((Symbol)registeredExceptions.get(tClass), new SimpleString(getMessage(t)));
    358                 }
    359                 signal(new LispError(getMessage(t)));
     356                Symbol condition = getCondition(t.getClass());
     357                if (condition == null)
     358                    signal(new JavaException(t));
     359                else
     360                    signal(condition, new SimpleString(getMessage(t)));
    360361            }
    361362            // Not reached.
     
    453454            catch (Throwable t) {
    454455                Class tClass = t.getClass();
    455                 if (registeredExceptions.containsKey(tClass)) {
    456                     signal((Symbol)registeredExceptions.get(tClass), new SimpleString(getMessage(t)));
    457                 }
    458                 signal(new LispError(getMessage(t)));
     456                Symbol condition = getCondition(t.getClass());
     457                if (condition == null)
     458                    signal(new JavaException(t));
     459                else
     460                    signal(condition, new SimpleString(getMessage(t)));
    459461            }
    460462            // Not reached.
     
    482484            catch (Throwable t) {
    483485                Class tClass = t.getClass();
    484                 if (registeredExceptions.containsKey(tClass)) {
    485                     signal((Symbol)registeredExceptions.get(tClass), new SimpleString(getMessage(t)));
    486                 }
    487                 signal(new LispError(getMessage(t)));
     486                Symbol condition = getCondition(t.getClass());
     487                if (condition == null)
     488                    signal(new JavaException(t));
     489                else
     490                    signal(condition, new SimpleString(getMessage(t)));
    488491            }
    489492            // Not reached.
     
    560563        }
    561564        catch (Throwable t) {
    562             Class throwableClass = t.getClass();
    563             if (registeredExceptions.containsKey(throwableClass)) {
    564                 signal((Symbol)registeredExceptions.get(throwableClass),
    565                        new SimpleString(getMessage(t)));
    566             }
    567             signal(new JavaException(t));
     565            Symbol condition = getCondition(t.getClass());
     566            if (condition == null)
     567                signal(new JavaException(t));
     568            else
     569                signal(condition, new SimpleString(getMessage(t)));
    568570        }
    569571        // Not reached.
Note: See TracChangeset for help on using the changeset viewer.