Source code for campy.system.error

"""Top-level Exceptions and Errors.

Provides a generic function to raise an error from a message.

All exceptions (that are not builtin exceptions like ValueError, IndexError)
raised in this library inherit from :class:`CampyException`, the root of all
exceptions in this library.
"""
# TODO(sredmond): Should this be called ErrorException for consistency with ACM?
[docs]class CampyException(Exception): """Root of all exceptions in the :mod:`campy` module. This allows for consistent exception reporting in the module. """
[docs]class InterruptedIOError(CampyException): """A blocking I/O call is interrupted by closing the program."""
[docs]def error(message): """Generic function to raise an error. Signals an error condition in a program by throwing an :class:`CampyException`: with the specified message. :param str message: error message :raises: An :class:`CampyException` with the supplied error message. Usage:: if 'Red Leicester' not in cheeses: error("I'm afraid we're fresh out of Red Leicester, sir.") You can check whether a code block raises a :class:`CampyException` with:: try: do_something_that_might_raise_a_campy_exception() except CampyException: recover_from_an_error() If the supplied message is an instance or a subclass of :class:`Exception`, the :class:`CampyException` is raised from the supplied Exception so that traceback information is maintained. """ if isinstance(message, Exception) or issubclass(message, Exception): raise CampyException(message) from message else: raise CampyException(message)
__all__ = ['CampyException', 'InterruptedIOError', 'error']