This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Throwing exceptions from unimplemented classes?


Excuse the newbie question, but has there been any consideration given
to throwing a RuntimeException from unimplemented classes?  This would
greatly aid those who want to make their code compatible with gcj,
without putting needless additional checks.

For example, I have a method I have an applet that uses Java
reflection to load the a Swing class at runtime and if the class is
not available it will then default to using the next best AWT class.

public Container createSplitPlane(Component leftPane,Component centerPane)
{
    Container retval = null;
    try
    {
      final Class                         jsplitClass =
        Class.forName("javax.swing.JSplitPane");
      final Class[]                       params =
      {Integer.TYPE, Component.class, Component.class};
      final java.lang.reflect.Constructor jsplitConstructor =
        jsplitClass.getConstructor(params);
      final java.lang.reflect.Field       horizontalField =
        jsplitClass.getField("HORIZONTAL_SPLIT");
      final Object                        horizontal =
        horizontalField.get(jsplitClass);
      final Object[]                      args =
      {horizontal, leftPane, centerPane};
      retval = (Container)jsplitConstructor.newInstance(args);
    }
    catch(final Throwable ignored)
    {
      retval = new Panel(new BorderLayout());
      retval.add(leftPane, BorderLayout.WEST);
      retval.add(centerPane, BorderLayout.CENTER);
    }
    return retval;
   

This type of code works fine so long as either the Swing class is not
present, or if it is present and work.  However, if the Swing class is
a dummy implementation, then the code will use the dummy
implementation, instead of defaulting to an AWT class that works.

However, it if the dummy JSplitPane class threw a RuntimeException,
then the code would correctly default to the working class version. 
If the code is in development, and may or may not work, the a
System.property could be set to indicate whether or not a Runtime
exception should be thrown.

                                              Bill


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]