Без cellbell
(более общий ответ)
Определить функцию в записной книжке , ** Примечание: Audio
должны быть переданы в display
from IPython.display import Audio, display
def play_sound(self, etype, value, tb, tb_offset=None):
self.showtraceback((etype, value, tb), tb_offset=tb_offset)
display(Audio(url='http://www.wav-sounds.com/movie/austinpowers.wav', autoplay=True))
установить обработчик исключений, вы можете перечислить типы исключений в кортеже.
get_ipython().set_custom_exc((ZeroDivisionError,), play_sound)
тест это:
1/0
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-21-05c9758a9c21> in <module>()
----> 1 1/0
ZeroDivisionError: division by zero
С cellbell
: Разница с помощью %ding
магии.
import cellbell
def play_sound(self, etype, value, tb, tb_offset=None):
%ding
self.showtraceback((etype, value, tb), tb_offset=tb_offset)
print('ding worked!')
сброса пользовательских exeception, обратите внимание, вы можете использовать Exception
для воспроизведения звука при любой ошибке:
get_ipython().set_custom_exc((Exception,), play_sound)
тест:
1/0
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-4-05c9758a9c21> in <module>()
----> 1 1/0
ZeroDivisionError: division by zero
ding worked!
протестирован на jupyter ноутбук 4.2.3