python 学习笔记8-----异常

本文详细介绍了Python中异常处理的基本概念,包括try、except、else、finally语句的作用及使用方法。通过实例展示了如何在代码中进行异常捕获与处理,确保程序稳定运行并提供友好的用户反馈。此外,还介绍了如何利用`exc_info`获取异常的详细信息,进一步增强错误诊断能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例子:

def safe_float_2(obj):

    try:
        tmp = float(obj)
    except Exception, e:
        print e
    else:
        print 'data is ok'
        return tmp
    finally:

        print 'data is finally'

print safe_float_2('111111')
print safe_float_2('heloo')
print safe_float_2([1, 2, 2])

运行结果:

data is ok
data is finally
111111.0
could not convert string to float: heloo
data is finally
None
float() argument must be a string or a number
data is finally
None

try:需要执行的代码

except:捕捉到异常,需要执行的代码

else:未捕捉到异常,需要执行的代码,可选的

finally:无论是否捕捉到异常,都会执行的代码,常用于资源释放,可选的

raise:将本次异常提交给上层调用者,或者调用raise Exception("ba la ba la ......"),自己触发异常

标准异常类

BaseException:所有异常类的基类

SystemExit、KeyboardInterrupt 、Exception,派生于BaseException,剩余的其它类均派生于Exception。



为什么要用到异常处理

如果不去捕捉异常,服务器程序将会异常终止,不会给用户返回任何有帮助的友好信息,但是如果再设计和code时,能考虑到各种异常,为每种异常增加合理的异常处理,并返回友好的用户建议,不仅能使服务器不会无端终止,提高容错,更能大大提高用户体验。


exc_info的使用

import sys
import traceback
def safe_float_2(obj):
    try:
        tmp = float(obj)
    except Exception, e:
        print e
        print "type:", sys.exc_info()[0]
        print "value:", sys.exc_info()[1]
        print "bt:", (traceback.extract_tb(sys.exc_info()[2]))
    else:
        print 'data is ok'
        return tmp
    finally:
        print 'data is finally'

利用exc_info可以得到具体的异常type、value、出错堆栈,如果能把这3样东西打印出来,对于代码异常的处理将是非常有用的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值