python异常与错误学习

1 异常简介 

看如下示例:

print("-------test begin--------")
f = open("123.txt", "r")       #用只读模式打开一个不存在的文件,会报错
f.close()
print("-------test over--------")

打开一个不存在的文件123.txt,当找不到123.txt 文件时,就会抛出给我们一个IOError类型的错 误,No such file or directory:123.txt (没有123.txt这样的文件或目录)
 

异常: 当Python检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所 谓的"异常"

2 捕获异常 try...except... 

try:
    print("-------test begin--------")
    f = open("123.txt","r")
    f.close()
    print("-------test over--------")
except IOError:   #文件没找到属于IO异常,输入输出异常
    pass          #捕获异常后,执行的代码

此程序看不到任何错误,因为用except 捕获到了IOError异常,并添加了处理的方法

pass 表示实现了相应的实现,但什么也不做;如果把pass改为print语句,那么就会输出其他信息 

把可能出现问题的代码,放在try中

把处理异常的代码,放在except中 

 

3 except捕获多个异常 

try:
   print(num)
   f = open("123.txt", "r")

except (NameError,IOError):          #将可能产生的所有异常类型,都放在下面的小括号中
    print("产生错误了......")          #捕获异常后,执行的代码

当捕获多个异常时,可以把要捕获的异常的名字,放到except 后,并使用元组的方式仅进行存储。

4 获取异常的信息描述

try:

   f = open("test.txt", "r")
   print(num)

except (NameError,IOError) as result:          #将可能产生的所有异常类型,都放在下面的小括号中
    print("产生错误了......")          #捕获异常后,执行的代码
    print(result)                    #打印错误信息

当捕获多个异常时,可以把要捕获的异常的名字,放到except 后,并使用元组的方式仅进行存储。但是只对第一个异常报错。

 

5 捕获所有异常 

try:
   f = open("123.txt", "r")
   print(num)

except Exception as result:         #Exception表示可以承接所有异常类型,
    print("产生错误了......")          #捕获异常后,执行的代码
    print(result)                    #打印错误信息

6 try...finally... 

try...finally...语句用来表达这样的情况:
在程序中,如果一个段代码必须要执行,即无论异常是否产生都要执行,那么此时就需要使用 finally。 比如文件关闭,释放锁,把数据库连接返还给连接池等。

import time
try:
    f = open("test.txt","r")

    try:
        while True:
            context = f.readline()
            if len(context)==0:
                break
            time.sleep(2)
            print(context)
    finally:           #一定会被执行
        f.close()
        print("文件关闭")

except Exception as result:
    print("发生异常:%s"%result)

test.txt文件中每一行数据打印,但是我有意在每打印一行之前用time.sleep方法暂停2秒钟。这样 做的原因是让程序运行得慢一些。在程序运行的时候,按Ctrl+c中断(取消)程序。
我们可以观察到KeyboardInterrupt异常被触发,程序退出。但是在程序退出之前,finally从句仍 然被执行,把文件关闭。
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值