Skip to main content
 首页 » 编程设计

python之如果语句为 False,我可以抛出异常吗

2025年05月04日11lyj

try: 
    content = my_function() 
except: 
    exit('Could not complete request.') 

我想修改上面的代码来检查 content 的值是否包含字符串。我想过使用 if 'stuff' in content: 或正则表达式,但我不知道如何将它放入 try;因此,如果匹配为 False,则会引发异常。当然,我总是可以在该代码之后添加一个 if,但是有没有办法将它挤在那里?

伪代码:

try: 
    content = my_function() 
    if 'stuff' in content == False: 
        # cause the exception to be raised 
except: 
    exit('Could not complete request.') 

请您参考如下方法:

要引发异常,您需要使用raise 关键字。我建议您在 manual 中阅读更多关于异常的内容。 .假设 my_function() 有时会抛出 IndexError,使用:

try: 
    content = my_function() 
    if 'stuff' not in content: 
        raise ValueError('stuff is not in content') 
except (ValueError, IndexError): 
    exit('Could not complete request.') 

此外,您应该永远不要只使用except,因为它会捕获比您预期的更多。例如,它将捕获 MemoryError、KeyboardInterrupt 和 SystemExit。它会让你的程序更难被杀死(Ctrl+C 不会做它应该做的事情),在内存不足的情况下容易出错,并且 sys. exit() 将无法按预期工作。

更新:您也不应该只捕获Exception,而是捕获更具体类型的异常。 SyntaxError 也继承自Exception。这意味着您文件中的任何语法错误都将被捕获并且不会被正确报告。