From 300c8bd4c2c0c6d626a6aaeb873c22a8f8b9fc3f Mon Sep 17 00:00:00 2001 From: Rachel Dowdall Date: Thu, 20 Mar 2014 22:40:38 +0000 Subject: Added ZeroDivisionError to float division. --- py/objexcept.c | 1 + 1 file changed, 1 insertion(+) (limited to 'py/objexcept.c') diff --git a/py/objexcept.c b/py/objexcept.c index 11177724d..3f636ffc6 100644 --- a/py/objexcept.c +++ b/py/objexcept.c @@ -93,6 +93,7 @@ MP_DEFINE_EXCEPTION(OverflowError, BaseException) MP_DEFINE_EXCEPTION(OSError, BaseException) MP_DEFINE_EXCEPTION(NotImplementedError, BaseException) MP_DEFINE_EXCEPTION(StopIteration, BaseException) +MP_DEFINE_EXCEPTION(ZeroDivisionError, BaseException) mp_obj_t mp_obj_new_exception(const mp_obj_type_t *exc_type) { return mp_obj_new_exception_msg_varg(exc_type, NULL); -- cgit v1.2.3 From 721c55dced099a797f0910839c7c4f9ac7599ed4 Mon Sep 17 00:00:00 2001 From: Rachel Dowdall Date: Sat, 22 Mar 2014 15:28:16 +0000 Subject: Added exception hierarchy except for OSError and UnicodeError (requires arguments). Comment out the errors that aren't needed if memory becomes an issue. --- py/objexcept.c | 87 +++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 71 insertions(+), 16 deletions(-) (limited to 'py/objexcept.c') diff --git a/py/objexcept.c b/py/objexcept.c index 3f636ffc6..7fd783b3a 100644 --- a/py/objexcept.c +++ b/py/objexcept.c @@ -77,23 +77,78 @@ const mp_obj_type_t mp_type_ ## exc_name = { \ .bases_tuple = (mp_obj_t)&mp_type_ ## base_name ## _base_tuple, \ }; +// List of all exceptions, arranged as in the table at: +// http://docs.python.org/3.3/library/exceptions.html MP_DEFINE_EXCEPTION_BASE(BaseException) - -MP_DEFINE_EXCEPTION(AssertionError, BaseException) -MP_DEFINE_EXCEPTION(AttributeError, BaseException) -MP_DEFINE_EXCEPTION(ImportError, BaseException) -MP_DEFINE_EXCEPTION(IndentationError, BaseException) -MP_DEFINE_EXCEPTION(IndexError, BaseException) -MP_DEFINE_EXCEPTION(KeyError, BaseException) -MP_DEFINE_EXCEPTION(NameError, BaseException) -MP_DEFINE_EXCEPTION(SyntaxError, BaseException) -MP_DEFINE_EXCEPTION(TypeError, BaseException) -MP_DEFINE_EXCEPTION(ValueError, BaseException) -MP_DEFINE_EXCEPTION(OverflowError, BaseException) -MP_DEFINE_EXCEPTION(OSError, BaseException) -MP_DEFINE_EXCEPTION(NotImplementedError, BaseException) -MP_DEFINE_EXCEPTION(StopIteration, BaseException) -MP_DEFINE_EXCEPTION(ZeroDivisionError, BaseException) +MP_DEFINE_EXCEPTION(SystemExit, BaseException) +//MP_DEFINE_EXCEPTION(KeyboardInterrupt, BaseException) +MP_DEFINE_EXCEPTION(GeneratorExit, BaseException) +MP_DEFINE_EXCEPTION(Exception, BaseException) + MP_DEFINE_EXCEPTION_BASE(Exception) + MP_DEFINE_EXCEPTION(StopIteration, Exception) + MP_DEFINE_EXCEPTION(ArithmeticError, Exception) + MP_DEFINE_EXCEPTION_BASE(ArithmeticError) + MP_DEFINE_EXCEPTION(FloatingPointError, ArithmeticError) + MP_DEFINE_EXCEPTION(OverflowError, ArithmeticError) + MP_DEFINE_EXCEPTION(ZeroDivisionError, ArithmeticError) + MP_DEFINE_EXCEPTION(AssertionError, Exception) + MP_DEFINE_EXCEPTION(AttributeError, Exception) + MP_DEFINE_EXCEPTION(BufferError, Exception) + MP_DEFINE_EXCEPTION(EnvironmentError, Exception) + MP_DEFINE_EXCEPTION(EOFError, Exception) + MP_DEFINE_EXCEPTION(ImportError, Exception) + MP_DEFINE_EXCEPTION(IOError, Exception) + MP_DEFINE_EXCEPTION(LookupError, Exception) + MP_DEFINE_EXCEPTION_BASE(LookupError) + MP_DEFINE_EXCEPTION(IndexError, LookupError) + MP_DEFINE_EXCEPTION(KeyError, LookupError) + MP_DEFINE_EXCEPTION(MemoryError, Exception) + MP_DEFINE_EXCEPTION(NameError, Exception) + MP_DEFINE_EXCEPTION_BASE(NameError) + MP_DEFINE_EXCEPTION(UnboundLocalError, NameError) + MP_DEFINE_EXCEPTION(OSError, Exception) + // Probably don't need these + /*MP_DEFINE_EXCEPTION_BASE(OSError) + MP_DEFINE_EXCEPTION(BlockingIOError, OSError) + MP_DEFINE_EXCEPTION(ChildProcessError, OSError) + MP_DEFINE_EXCEPTION(ConnectionError, OSError) + MP_DEFINE_EXCEPTION(BrokenPipeError, ConnectionError) + MP_DEFINE_EXCEPTION(ConnectionAbortedError, ConnectionError) + MP_DEFINE_EXCEPTION(ConnectionRefusedError, ConnectionError) + MP_DEFINE_EXCEPTION(ConnectionResetError, ConnectionError) + MP_DEFINE_EXCEPTION(FileExistsError, OSError) + MP_DEFINE_EXCEPTION(FileNotFoundError, OSError) + MP_DEFINE_EXCEPTION(InterruptedError, OSError) + MP_DEFINE_EXCEPTION(IsADirectoryError, OSError) + MP_DEFINE_EXCEPTION(NotADirectoryError, OSError) + MP_DEFINE_EXCEPTION(PermissionError, OSError) + MP_DEFINE_EXCEPTION(ProcessLookupError, OSError) + MP_DEFINE_EXCEPTION(TimeoutError, OSError)*/ + MP_DEFINE_EXCEPTION(ReferenceError, Exception) + MP_DEFINE_EXCEPTION(RuntimeError, Exception) + MP_DEFINE_EXCEPTION_BASE(RuntimeError) + MP_DEFINE_EXCEPTION(NotImplementedError, RuntimeError) + MP_DEFINE_EXCEPTION(SyntaxError, Exception) + MP_DEFINE_EXCEPTION_BASE(SyntaxError) + MP_DEFINE_EXCEPTION(IndentationError, SyntaxError) + MP_DEFINE_EXCEPTION_BASE(IndentationError) + MP_DEFINE_EXCEPTION(TabError, IndentationError) + MP_DEFINE_EXCEPTION(SystemError, Exception) + MP_DEFINE_EXCEPTION(TypeError, Exception) + MP_DEFINE_EXCEPTION(ValueError, Exception) + //TODO: Implement UnicodeErrors which take arguments + MP_DEFINE_EXCEPTION(Warning, Exception) + MP_DEFINE_EXCEPTION_BASE(Warning) + MP_DEFINE_EXCEPTION(DeprecationWarning, Warning) + MP_DEFINE_EXCEPTION(PendingDeprecationWarning, Warning) + MP_DEFINE_EXCEPTION(RuntimeWarning, Warning) + MP_DEFINE_EXCEPTION(SyntaxWarning, Warning) + MP_DEFINE_EXCEPTION(UserWarning, Warning) + MP_DEFINE_EXCEPTION(FutureWarning, Warning) + MP_DEFINE_EXCEPTION(ImportWarning, Warning) + MP_DEFINE_EXCEPTION(UnicodeWarning, Warning) + MP_DEFINE_EXCEPTION(BytesWarning, Warning) + MP_DEFINE_EXCEPTION(ResourceWarning, Warning) mp_obj_t mp_obj_new_exception(const mp_obj_type_t *exc_type) { return mp_obj_new_exception_msg_varg(exc_type, NULL); -- cgit v1.2.3