【问题标题】:Is there an alternative for sys.exit() in python?python 中 sys.exit() 有替代方法吗?
【发布时间】:2016-07-21 17:50:38
【问题描述】:
try:
 x="blaabla"
 y="nnlfa"   
 if x!=y:
        sys.exit()
    else:
        print("Error!")
except Exception:
    print(Exception)

我不是在问为什么它会引发错误。我知道它会引发exceptions.SystemExit。我想知道是否有其他退出方式?

【问题讨论】:

  • 使用sys.exit有什么问题?如果我们不知道您为什么需要不同的解决方案,我们无法推荐适合您的解决方案。
  • 我不明白反对票,这是一个合理的问题。如果你想避免对象删除处理,你可以使用os._exit
  • 我还是不明白你需要什么。你只需要退出你的脚本吗?如果是这样,sys.exit 有什么问题?你需要跳过正常的退出程序吗?然后使用@tdelaney 回答。如果是别的,你需要明确你需要什么。

标签: python python-3.x try-except


【解决方案1】:

os._exit() 将在没有SystemExit 或正常的python 退出处理的情况下执行低级进程退出。

【讨论】:

  • 非常有用!尤其是当您的应用程序捕获 SystemExit 异常并且您将 pdb 断点放入循环时。
【解决方案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()    

【讨论】:

    猜你喜欢
    • 2020-01-17
    • 1970-01-01
    • 2021-08-20
    • 2017-03-02
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多