Python异常处理实例教程(捕捉异常、错误)

#一个最简单的异常捕捉(int 和 str 不能做+ )
try:
    print("aaa"+2)
except:
    print("Error!\n")

#以下接收具体错误类型,
#"TypeError""ZeroDivisionError"都是基类Exception的成员,
#并且定义变量e用于接收具体错误信息,
#以显示更多关于异常的信息。
#把"a"换做0,1
try:
    r=10/"a"
    print("result",r)
except TypeError as e:
    print("TypeError:",e,"\n")
except ZeroDivisionError as e:
    print("ZeroDivisionError:",e,"\n")
else:
    print("no error!")

#以下创建一个新的异常类,继承自Exception类
class MyError(Exception):
    def __init__(self, value):
        self.value = value
    def __str__(self):
        return repr(self.value)
try:
    raise MyError(824)
except MyError as e:
    print('My exception occurred, value:', e.value,'\n')

#触发自定义异常
filename = input('please input a file name:')
if filename=='hello':
    raise NameError('input file name error! No hello here!')

#以下是try...except和try...finally两种语句的执行规则
''' 执行try下的语句,如果引发异常,则执行过程会跳到第一个except语句。
    如果第一个except中定义的异常与引发的异常匹配,则执行该except中的语句。
    如果引发的异常不匹配第一个except,则会搜索第二个except,允许编写的except数量没有限制。
    如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。
    如果没有发生异常,则执行else块代码。'''
''' 执行try下的代码。
    如果发生异常,在该异常传递到下一级try时,执行finally中的代码。
    如果没有发生异常,则执行finally中的代码'''

#补充一点关于try...finally
'''try...finally...子句用来表达这样的情况:
不管捕捉到的是什么错误,无论错误是不是发生,
这些代码“必须”运行,比如文件关闭等。以下是一个实例: '''
'''try:
    fh = open("testfile", "w")
    try:
        fh.write("这是一个测试文件,用于测试异常!!")
    finally:
        print("关闭文件")
        fh.close()
except IOError:
    print("Error: 没有找到文件或读取文件失败")'''
'''当在try块中抛出一个异常,立即执行finally块代码。
    finally块中的所有语句执行后,异常被再次触发,并执行except块代码。
    在这个例子中可以看出finally的用处,并不是“怎样都会运行所以没有用的东西”。'''

#最后一个小总结
'''Python的异常处理能力是很强大的,可向用户准确反馈出错信息。
    在Python中,异常也是对象,可对它进行操作。所有异常都是基类Exception的成员。
    所有异常都从基类Exception继承,而且都在exceptions模块中定义。
    Python自动将所有异常名称放在内建命名空间中,所以程序不必导入exceptions模块即可使用异常。
    一旦引发而且没有捕捉SystemExit异常,程序执行就会终止。
    异常处理就是为了捕捉异常返回有用信息而不程序执行终止的操作'''

 

内容集合了知乎和各博客,也有一丁点自己补的......找不出来源了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值