2016-07-21 3 views
-4
try: 
x="blaabla" 
y="nnlfa" 
if x!=y: 
     sys.exit() 
    else: 
     print("Error!") 
except Exception: 
    print(Exception) 

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

+5

Что случилось с использованием 'sys.exit'? Если мы не знаем, почему вам нужно другое решение, мы не можем предложить тот, который будет работать для вас. –

+1

Я не понимаю голоса, их законный вопрос. Если вы хотите избежать обработки удаления объекта, вы можете использовать 'os._exit'. – tdelaney

+0

привет @Morgan Thrapp.come на man.thats не работает. Это причина, по которой я хочу другое решение. Я внес изменения в question.please, помогите мне разобраться в этом. – kragor

ответ

1

Некоторые вопросы, подобные этому, действительно должны сопровождаться реальным намерением кода. Причина в том, что некоторые проблемы должны решаться совершенно по-разному. В тексте сценария 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()  
1

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

Смежные вопросы