Python-捕获未知错误

1,179 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第23天,点击查看活动详情

1. 捕获未知错误

  • 在开发时,要预判到所有可能出现的错误,还是有一定难度的。当然,如果能预判到所有的错误类型,我们就可以根据不同的错误类型做出不同的响应。
  • 如果希望程序无论出现任何错误,都不会因为Python解释器抛出异常而被终止,因此我们就要学习一下如何捕获未知错误,可以再增加一个except 语法如下:
except Exception as result
    print("未知错误 %s" % result)

2. 案例演示

😊 案例需求:请提示用户输入一个数,然后计算8÷用户输入数字的结果,若用户输入错误返回错误信息,并且能够保证程序正常执行不中断。

😊 代码演示如下所示:其中我们使用了Exception捕获了未知错误,使得无论出现何种错误程序都不中断。

try:
    # 提示用户输入一个整数
    num = int(input("请输入一个整数:"))

    # 使用8除以用户输入的整数并且输出
    result = 8 / num
    print(result)


except ValueError:
    # 有针对性地编写错误处理代码
    print("请输入正确的整数")
# 想要判断多少种错误类型,就把多少种错误类型依次类推写在这里
except Exception as result:
    print("未知错误 %s" % result)

😊 程序运行结果如下图所示:当用户输入一个0时,得到如下运行结果。这样我们就不需要预判到所有的未知错误,都能够保证程序正常执行。

image.png

3. 异常捕获的完整语法

在实际开发中,为了能够处理复杂的异常情况,完整的异常语法如下:

try: 
    尝试执行的代码 
except: 
    出现错误的处理
except Exception as result
    print("未知错误 %s" % result)
else:
    # 没有异常才会执行的代码
    pass
finally:
    # 无论是否有异常,都会执行的代码
    print("无论是否有异常,都会执行的代码")
  • 🚀 若try后面的代码正常执行完成,没有出现任何错误的时候。不会执行except下方的代码,但是会来到else下方来执行else下方的代码。还会继续执行finally下方的代码。
  • 🚀 而finaliy下方的代码,无论是否出现错误,都会被执行的代码。
  • 🚀 若执行代码时,一旦出现错误,就会跳到相应的except执行下方代码。然后会来到finally,执行finally下方的代码。