There is a small collection of interfaces and classes that are defined by the SIDL runtime library. Some of these objects are implicitly inherited by objects and classes.
All classes that do not explicitly extend another class implicitly extend sidl.BaseClass. All interfaces that do not explicitly extend another interface implicitly extend sidl.BaseInterface. Furthermore, sidl.BaseClass implements sidl.BaseInterface. This means that all classes can be cast to a sidl.BaseClass and all objects can be cast to sidl.BaseInterface.
All exceptions must explicitly implement the interfaces in sidl.BaseException. The easiest way to do this is to is to extend the provided class sidl.SIDLException. This is a class the implements the basic Exception functionality for you, including getNote and setNote. You may also override one or more of these functions if you wish.
If a method in SIDL claims to throw an object that does not inherit from sidl.BaseException, this is an error and will be reported by Babel.