Code development and data analysis always require a bit of trial and error, and IPython contains tools to streamline this process. This section will briefly cover some options for controlling Python's exception reporting, followed by exploring tools for debugging errors in code.
Most of the time when a Python script fails, it will raise an Exception.
When the interpreter hits one of these exceptions, information about the cause of the error can be found in the traceback, which can be accessed from within Python.
%xmode magic function, IPython allows you to control the amount of information printed when the exception is raised.
Consider the following code:
ZeroDivisionError Traceback (most recent call last) <ipython-input-2-b2e110f6fc8f> in <module>() ----> 1 func2(1) <ipython-input-1-d849e34d61fb> in func2(x) 5 a = x 6 b = x - 1 ----> 7 return func1(a, b) <ipython-input-1-d849e34d61fb> in func1(a, b) 1 def func1(a, b): ----> 2 return a / b 3 4 def func2(x): 5 a = x ZeroDivisionError: division by zero
func2 results in an error, and reading the printed trace lets us see exactly what happened.
By default, this trace includes several lines showing the context of each step that led to the error.
%xmode magic function (short for Exception mode), we can change what information is printed.
%xmode takes a single argument, the mode, and there are three possibilities:
The default is
Context, and gives output like that just shown before.
Plain is more compact and gives less information:
Exception reporting mode: Plain