TryExcept行为

2024-09-29 21:57:47 发布

您现在位置:Python中文网/ 问答频道 /正文

import sys  

def checkarg():  
    try:  
        filename=str(sys.argv[1])  
        if filename=="-mycommand":  
            print "SPECIFIC_TEXT"  
            sys.exit()  
        else:    
            return filename  
    except:  
        print "ERROR"  
        sys.exit()

大家好…我对上面的代码有问题。当我调用'checkarg'函数时,如果我没有在命令行上传递任何参数,我将得到“ERROR”输出和sys exit,正如预期的那样。

但是,如果我在命令行上提供一个参数(比如“-mycommand”),它会打印“SPECIFIC_TEXT”,然后也会从EXCEPT块打印“ERROR”消息。

TRY块只在我提供参数时运行,如果我不提供参数,则EXCEPT将获得转向。但是,它正在运行TRY和EXCEPT块。在

有人知道这种行为的原因吗??我的密码有错吗?谢谢大家!在


Tags: text命令行import参数defsysexiterror
3条回答

对于可以使用控制流逻辑检查状态的情况,您确实不应该使用try/except。在

相反,在本例中,检查iflen(sys.argv) > 1。在

另一个永远不要使用空的except:你甚至会捕捉到系统异常,比如SystemExit或{},这使得在没有一个混乱的终止之前,你的程序是不可能终止的。在

在此处找到答案:http://docs.python.org/library/sys.html

sys.exit([arg])

Exit from Python. This is implemented by raising the SystemExit exception, so cleanup actions specified by finally clauses of try statements are honored, and it is possible to intercept the exit attempt at an outer level.

^{cd1>}通过引发异常来工作。所以你的exceptive块才会执行。

我想我理解你的问题。。。在

sys.exit()通过引发SystemExit异常退出,except语句正在捕获该异常。在

相关问题 更多 >

    热门问题