Python对异常处理

1.异常简介

异常是什么?什么时候会发生异常?话不多说,直接上代码。

当打开一个不存在的文件时,对文件操作比较熟悉就知道,一定会报错

print("----test1------")
f = open("123.txt","r") # 打开123.txt文件
print("----test2--------")

运行结果:

----test1------
Traceback (most recent call last):
  File "F:/pythonProject/pythonProject/demo3-4.py", line 8, in <module>
    f = open("123.txt","r")
FileNotFoundError: [Errno 2] No such file or directory: '123.txt'

说明:

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

2.异常的概念

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

3.捕获异常

i.try…except…

代码示例:

try:
    print("----test1------")
    f = open("123.txt", "r")
    print("----test2--------")
except IOError:
    pass

运行结果:

----test1------

说明:

  • 此程序看不到任何错误,因为用 except 捕获到了IOError异常,并添加了处理的方法
  • pass 表示实现了相应的实现,但什么也不做;如果把pass改为print语句,那么就会输出其他信息
  • 把可能出现的异常的代码放在try中,把会出现异常结果写在except中
  • except可以捕获多个异常,用括号括起来,逗号隔开 ,示例如下

当出现多个异常时:

代码示例:

try:
    print("----test1------")
    f = open("123.txt", "r")
    print("----test2--------")
    
    print(num)
except (IOError,NameError): #捕获多个异常的写法
    print("产生了异常")

4.捕获异常信息

代码示例:

try:
    print("----test1------")
    f = open("123.txt", "r")
    print("----test2--------")
    
    print(num)
except (IOError,NameError) as result: #捕获多个异常的写法,将异常信息存储在result中进行打印
    print("产生了异常")
    print(result)

5.try…except…finally…

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

代码示例:

import time
try:
	f = open('test.txt')
	try:
		while True:
		content = f.readline()
		if len(content) == 0:
			break
		time.sleep(2)
		print(content)
	except:
		#如果在读取文件的过程中,产生了异常,那么就会捕获到
		#比如 按下了 ctrl+c
	pass
	finally:
		f.close()
		print('关闭文件')
except:
	print("没有这个文件")

Guess you like

Origin blog.csdn.net/Bleuuuu/article/details/120618949