Пользовательский 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, чтобы она работала со всем кодом плагина?

Это питон или возвышенная ошибка?

0 ответов

Другие вопросы по тегам