Пользовательский sys.excepthook не влияет на методы API плагина Sublime Text, есть ли способ обойти это?
Проблема с Sublime Text заключается в том, что когда возникает исключение в интерпретаторе плагина, сообщение об ошибке отображается только на панели консоли, и его легко пропустить, не открывая его. Нет звука или каких-либо других видимых признаков, которые могли бы привлечь мое внимание.
Поэтому я решил создать собственную функцию обработки исключений, которая может отображать окно с сообщением об ошибке, помимо вывода исключения на консоль.
import sys, sublime, sublime_plugin
def handle_sublime_exceptions(ex_cls, ex, tb):
sublime.error_message("exception occured")
sys.excepthook = handle_sublime_exceptions
def my_test_exception_function():
raise Exception("my_test_exception_function")
# uncommenting this line shows correct error box
# my_test_exception_function()
class EventDump(sublime_plugin.EventListener):
def on_post_save(self, view):
# here the function raises exception but excepthook
# is reset to python's default
# and only console is reacting
my_test_exception_function()
И это работает довольно хорошо, даже синтаксические ошибки видны, когда они возникают после sys.excepthook
переопределение.
Но когда возникает исключение в таких классах API, как EventDump
тогда эта замена не работает.
Есть ли способ установить ловушку пользовательских исключений для плагинов Sublime, чтобы она работала со всем кодом плагина?
Это питон или возвышенная ошибка?