Python下的异常处理及错误日志记录

Python使用被称为异常的特殊对象来表达执行期间发现的错误。当这些异常没有被捕获并处理时,程序将停止,并向控制台打印错误信息。这个错误信息通常是一个traceback,包含了异常的类型,以及诱发这个异常的代码位置及调用栈细节。

版权声明

本文可以在互联网上自由转载,但必须:注明出处(作者:海洋饼干叔叔)并包含指向本页面的链接。

本文不可以以纸质出版为目的进行改编、摘抄。

本文节选自作者的《Python编程基础及应用》视频教程。

1. 曾经的异常

在本书的前半部分,我们已经遇到过很多异常:

异常类 说明
ValueError 值与期望的不符
IndentationError 代码缩进错误
IndexError 序列索引不存在
AssertionError 断言失败
NameError 名字不存在
KeyError 映射(比如字典)中的键不存在
AttributeError 属性错误(对象无指定名字的属性)
TypeError 类型出错
SyntaxError 代码语法错误
OSError 操作系统未能执行指定任务
ZeroDivisionError 除0错误

这些异常类,都继承自Exception类型。在本书的前半部分,我们对于这些异常采取了放任的态度: 程序直接报错停止。但一个严谨的程序,应该捕获并处理这些异常。

异常发生后
- 捕获并处理异常,尝试将程序从异常中拯救出来,继续正常运行。
- 捕获并处理异常,至少做一些必要的紧急操作,避免严重后果的发生。比如,汽车的车载控制系统发现发动机的“异常高温”(可能意味着起火)异常,应尝试切断油路,迫使汽车减速停车;一个股票交易系统发现无法恢复的异常,应尝试关闭数据库连接,并将没有保存的文件全部存盘。
- 捕获并处理异常,最低限度,作者认为应该将异常信息保存在错误日志中,以便程序员查找错误发生的原因。

2. try except else finally

下述代码展示了一个完整的异常处理程序:

#try.py
def divide(a, b):
    return a/b


while True:
    sFirst = input("First number:")
    sSecond = input("Second number:")
    if sFirst == "q" or sSecond == "q":
        break
    try:
        iFirst = int(sFirst)
        iSecond = int(sSecond)
        fResult = divide(iFirst,iSecond)
    except (ZeroDivisionError) as e
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值