Exceptions as part of the API
Exceptions play a critical role in the API of your library. Developers using your library depend on accurate descriptions of where and why exceptions might be thrown from your package. Documentation is critical. Also maintaining the types of messages that are thrown is also an important requirement for maintaining backwards-compatibility.
Because Exceptions are critical to the API of your package, you must ensure that you don't break backwards compatibility by making changes to exceptions.
Things that break BC include:
-
Any change to which methods throw exceptions.
-
A change whereby a method throws an exception higher in the inheritance tree. For example, if you changed your method to throw a
PEAR_Exception
rather than aPEAR_IOException
, you would be breaking backwards compatibility.
Things that do not break BC:
-
Throwing a subclass of the original exception. For example, changing a method to throw
PEAR_IOException
when before it had been throwingPEAR_Exception
would not break BC (provided thatPEAR_IOException
extendsPEAR_Exception
).