Можно ли задать и код завершения, и текст вывода в stderr в исключении python?
Исключение SystemExit
позволяет задавать код завершения. Также оно позволяет задавать текст вывода в stderr (который как и ожидается будет напечатан только если исключение не отловлено). Но при этом, код завершения может быть равен только 1. Т.е. указать и то и другое нельзя, что как по мне не удобно, может потребоваться и то и другое. За примером далеко ходить не надо. В argparse если передать некорректные аргументы из терминала, метод parse_args() вбрасывает SystemExit. В stderr пишется текст, код завершения 2. Казалось бы всё отлично, но нет. Если отловить исключение, в stderr всё равно будет тот же вывод. Чего по идее не должно быть, если исключение отловлено. Получается в модуле написано что-то вроде этого:
print(text, file=sys.stderr)
exit(2)
Как по мне выглядит коряво. Отсюда вопрос: можно ли задать и код завершения, и текст вывода в stderr в исключении python?