Show More
@@ -1447,29 +1447,37 b' class InteractiveShell(SingletonConfigurable, Magic):' | |||||
1447 |
|
1447 | |||
1448 | Set a custom exception handler, which will be called if any of the |
|
1448 | Set a custom exception handler, which will be called if any of the | |
1449 | exceptions in exc_tuple occur in the mainloop (specifically, in the |
|
1449 | exceptions in exc_tuple occur in the mainloop (specifically, in the | |
1450 | run_code() method. |
|
1450 | run_code() method). | |
1451 |
|
1451 | |||
1452 |
|
|
1452 | Parameters | |
|
1453 | ---------- | |||
|
1454 | ||||
|
1455 | exc_tuple : tuple of exception classes | |||
|
1456 | A *tuple* of exception classes, for which to call the defined | |||
|
1457 | handler. It is very important that you use a tuple, and NOT A | |||
|
1458 | LIST here, because of the way Python's except statement works. If | |||
|
1459 | you only want to trap a single exception, use a singleton tuple:: | |||
|
1460 | ||||
|
1461 | exc_tuple == (MyCustomException,) | |||
1453 |
|
1462 | |||
1454 | - exc_tuple: a *tuple* of valid exceptions to call the defined |
|
1463 | handler : callable | |
1455 | handler for. It is very important that you use a tuple, and NOT A |
|
1464 | handler must have the following signature:: | |
1456 | LIST here, because of the way Python's except statement works. If |
|
|||
1457 | you only want to trap a single exception, use a singleton tuple: |
|
|||
1458 |
|
1465 | |||
1459 | exc_tuple == (MyCustomException,) |
|
1466 | def my_handler(self, etype, value, tb, tb_offset=None): | |
|
1467 | ... | |||
|
1468 | return structured_traceback | |||
1460 |
|
1469 | |||
1461 | - handler: this must be defined as a function with the following |
|
1470 | Your handler must return a structured traceback (a list of strings), | |
1462 | basic interface:: |
|
1471 | or None. | |
1463 |
|
1472 | |||
1464 | def my_handler(self, etype, value, tb, tb_offset=None) |
|
1473 | This will be made into an instance method (via types.MethodType) | |
1465 | ... |
|
1474 | of IPython itself, and it will be called if any of the exceptions | |
1466 | # The return value must be |
|
1475 | listed in the exc_tuple are caught. If the handler is None, an | |
1467 | return structured_traceback |
|
1476 | internal basic one is used, which just prints basic info. | |
1468 |
|
1477 | |||
1469 | This will be made into an instance method (via types.MethodType) |
|
1478 | To protect IPython from crashes, if your handler ever raises an | |
1470 | of IPython itself, and it will be called if any of the exceptions |
|
1479 | exception or returns an invalid result, it will be immediately | |
1471 | listed in the exc_tuple are caught. If the handler is None, an |
|
1480 | disabled. | |
1472 | internal basic one is used, which just prints basic info. |
|
|||
1473 |
|
1481 | |||
1474 | WARNING: by putting in your own exception handler into IPython's main |
|
1482 | WARNING: by putting in your own exception handler into IPython's main | |
1475 | execution loop, you run a very good chance of nasty crashes. This |
|
1483 | execution loop, you run a very good chance of nasty crashes. This |
General Comments 0
You need to be logged in to leave comments.
Login now