Как можно остановить отладчик vscode даже внутри попытки try в python? - PullRequest
0 голосов
/ 03 мая 2020

Видя вопросы, которые предлагаются как "похожие", кажется, что большинство людей хотят противоположности того, что я хочу. Я хочу, чтобы отладчик для Vs-кода останавливался в точке ошибки, даже если он был внутри try-catch (как это обычно делается).

Но вместо этого он не останавливается, когда внутри try-catch как этот:

import traceback 

try:
    main() # has bugs I'm trying to debug
except Exception as e:
    send_email(traceback.format_exc())
    send_email(e)

Я понимаю, что это может быть странно хотеть, и что отладчик vs-кода, вероятно, работает правильно (так как мой код говорит ему, как обрабатывать исключения!), но я есть ошибки, которые я хочу отлаживать, а не ловить. На самом деле моя внешняя попытка есть только потому, что я использую кластер, который отправляет мне электронные письма, когда есть какие-либо ошибки, и сообщает мне о них. В противном случае у меня вообще не было бы попытки перехвата моего основного кода.

Есть ли способ указать vs-code игнорировать мои попытки перехвата, когда я фактически отлаживаю?


Идея, которую я только что написал, когда я писал это, состояла в том, чтобы изменить вид исключений, которые я ловлю ... хотя во время отладки я хочу, чтобы он всегда останавливался, а когда не отлаживаю, я хочу, чтобы он никогда не останавливался и отправлял мне электронное письмо с ошибка.

Есть идеи?

1 Ответ

0 голосов
/ 07 мая 2020

Это может быть очень глупый способ сделать это, но когда я работаю в режиме отладки, у меня есть флаг, установленный в true:

args.debug = True

, затем на основе этого флага я устанавливаю тип исключения :

if args.debug:
    args.ExceptionType = Exception
else:
    args.ExceptionType = EmptyError

, где EmptyError - это пользовательское исключение, которое ничего не делает, просто VS-код останавливается, когда я работаю в режиме отладки:

class EmptyError(Exception):
    def __init__(self):
        pass

Вроде тупой, но я не знаю ничего лучше.

...