首页 > 解决方案 > 我应该在例外块中放入什么以及为什么它不能裸露?

问题描述

我在 python 中得到了我的小语音助手,但如果 wolframalpha 没有给我任何回复,我不知道该怎么办。

elif 'wolfram' in command:
    try:
        print("I can answer your questions")
        talk("I can answer your questions")
        question = take_command()
        app_id = "XXXXXXXXXXXX"
        client = wolframalpha.Client(app_id)
        res = client.query(question)
        answer = next(res.results).text
        print(answer)
    except:
        print("Sorry, I can't answer that")
        talk("Sorry, I can't answer that")

它给了我这些警告

PEP 8:E722 不使用裸露的“除外”
过于宽泛的例外条款

标签: pythonapivoice-recognitionwolframalpha

解决方案


这只是一个 linter 警告。为避免它,您可以显式吞下异常:删除try...except块并运行代码以找出抛出的异常,然后捕获它:

try:
    # ...code...
except NoAnswerException as ex:   # Or whatever is being thrown
    # ...handle exception gracefully

如果你真的想要一个包罗万象的,你可以做到except Exception as ex:。另请注意,通常您希望块中的代码尽可能少try(理想情况下只有一行),以便您知道可以抛出哪些异常并明确捕获它们。


推荐阅读