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

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

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

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

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

python3 BadRequestError 捕捉 python捕获不到异常_开发语言

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

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

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

 

python3 BadRequestError 捕捉 python捕获不到异常_打开文件_02

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

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

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

python3 BadRequestError 捕捉 python捕获不到异常_python_03

 

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

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

 打印捕获的异常结果

python3 BadRequestError 捕捉 python捕获不到异常_嵌套_04

 所有的异常都会被捕获,而不只是捕获一种,只要出现需要捕获的异常,都要捕获则使用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)

会抛出一样的异常。

python3 BadRequestError 捕捉 python捕获不到异常_python_05

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

# 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)

打开文件报错情况

python3 BadRequestError 捕捉 python捕获不到异常_嵌套_06

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

python3 BadRequestError 捕捉 python捕获不到异常_python_07

 

 课堂练习:

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

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

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