Есть ли альтернатива для sys.exit() в python?

try:
 x="blaabla"
 y="nnlfa"   
 if x!=y:
        sys.exit()
    else:
        print("Error!")
except Exception:
    print(Exception)

Я не спрашиваю о том, почему выдает ошибку. Я знаю что это поднимает exceptions.SystemExit, Мне было интересно, есть ли другой выход?

2 ответа

Решение

Некоторые подобные вопросы должны действительно сопровождаться реальным намерением, стоящим за кодом. Причина в том, что некоторые проблемы должны решаться совершенно по-другому. В теле сценария return может быть использован для выхода из сценария. С другой точки зрения, вы можете просто запомнить ситуацию в переменной и реализовать требуемое поведение после try/except построить. Или твой except может проверить более явный вид исключения.

Код ниже показывает один вариант с переменной. Переменной присваивается функция (назначенная функция здесь не вызывается). Функция вызывается (через переменную) только после try/except:

#!python3

import sys

def do_nothing():
    print('Doing nothing.')

def my_exit():
    print('sys.exit() to be called')
    sys.exit()    

fn = do_nothing     # Notice that it is not called. The function is just
                    # given another name.

try:
    x = "blaabla"
    y = "nnlfa"   
    if x != y:
        fn = my_exit    # Here a different function is given the name fn.
                        # You can directly assign fn = sys.exit; the my_exit
                        # just adds the print to visualize.
    else:
        print("Error!")
except Exception:
    print(Exception)

# Now the function is to be called. Or it is equivalent to calling do_nothing(),
# or it is equivalent to calling my_exit(). 
fn()    

os._exit() будет делать выход процесса низкого уровня без SystemExit или обычная обработка выхода Python.

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