Python语法-异常捕获

Python异常捕获和java里的大同小异,也都是以try开始,但是python里的捕获用except,java里用的是catch,但是功能都一样都是出现异常进行捕获,那咱们就来看一下代码使用

首先看一下遇见异常不捕获异常的情况

print("test-------------------------1")
f= open("123.txt","r") # 发生运行异常不处理后续代码

print("test-------------------------2")

由于没有123.txt的文件,所以也无法读取到,程序会报找不到错误异常,后续的代码也不会执行

捕获异常,由于open是关于文件的操作,所以捕获IO异常

# 捕获异常
try:
    print("test-------------------------1")
    f= open("123.txt","r")
    print("test-------------------------2")
except IOError:  #文件没找到就是Io异常(输入输出异常)
    pass

 当出现错误时则进入捕获块,也就是except,我们又编写了pass就是过,所以没有打印异常则会出现如下图所示情况

 

 打印异常,此处没有定义变量名称,所以是NameError

# 捕获相同的异常
try:
    print(num)
except NameError:
    print("发生错误了")

你大概也能猜出会是如下图片错误。

 

 可捕获多个异常,并打印异常结果:多个异常用括号扩起,并用逗号分隔

try:
    print("test-------------------------1")
    f = open("123.txt", "r")  # 捕捉到这里有异常就不往下走了
    print("test-------------------------2")
    print(num)
except (NameError,IOError) as result:  # 多个异常用逗号分割,并加()
                                       # as result 则是真正的异常结果
    print("发生错误了")
    print(result)

 打印捕获的异常结果

 所有的异常都会被捕获,而不只是捕获一种,只要出现需要捕获的异常,都要捕获则使用Exception

try:
    print("test-------------------------1")
    f = open("file.txt", "r")  # 捕捉到这里有异常就不往下走了
    print("test-------------------------2")
    print(num)
except Exception as result:  # Exception所有的异常错误
                                       # as result 则是真正的异常结果
    print("发生错误了")
    print(result)

会抛出一样的异常。

 嵌套异常使用,像如下,没打开文件就出现异常则直接捕获打印,如果打开文件以后进行读取异常或其他异常,则进行捕获也要走最终关闭文件。

# try catch 嵌套
try:
    f=open("file.txt","r")
    try:
        while True:
            content=f.readline()
            if len(content)==0:
                break
            time.sleep(2)
            print(content)
    finally:
        f.close()
        print("文件关闭")
except Exception as result:
    print(result)

打开文件报错情况

 当文件打开以后执行后续代码出现问题,则文件关闭然后抛出异常,嵌套异常可针对不同模块进行有针对的抛出异常处理连接问题。

 

 课堂练习:

1.通过python新建文件gushi.txt,并写入一首古诗,考虑异常!

2.读取文件gushi.txt,将内容复制到copy.txt中,并在控制台输出复制完成,需要考虑异常!

ps:python的文件操作上节就是哦!

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值