各位读者大大们大家好,今天学习python的异常处理操作,并记录学习过程欢迎大家一起交流分享。
首先在桌面新建一个文本文档testinfo.txt,用于异常测试:
然后新建一个python文件命名为py3_exception.py,在这个文件中进行操作代码编写:
#为了不影响运行结果,
#我把导致异常错误的代码
#注释掉了
#如果大家需要测试,
#取消注释即可
#首先我们打开一个不存在的文件
#f = open('test_info.txt')
#这里会出现异常
#FileNotFoundError: [Errno 2]
#No such file or directory: 'test_info.txt'
#接下来把上面的代码放入异常处理代码块中
#运行代码
try:
f = open('test_info.txt')
except Exception:
print('文件不存在!')
#异常信息被捕捉到打印
#文件不存在!
#其中Exception是常见错误的基类
#开头可知文件不存在的时候具体出现的
#异常为FileNotFoundError
#是Exception的子类
#接下来看下面的例子:
try:
#打开一个存在的文件,
#该行代码会正常运行
f = open('testinfo.txt')
#声明一个变量赋值一个没有定义的值
no_exist_var = bad_data
except Exception:
print('文件不存在!')
#捕获到异常信息,但是提示信息不够清晰
#容易造成误解
#修改如下,改为具体捕捉到子类异常:
try:
f = open('testinfo.txt')
#声明一个变量赋值一个没有定义的值
#no_exist_var = bad_data
except FileNotFoundError:
print('文件不存在!')
#当我们运行上面的代码会抛除具体异常信息
#NameError: name 'bad_data' is not defined
#我们对上面代码进行调整
try:
f = open('testinfo.txt')
#声明一个变量赋值一个没有定义的值
no_exist_var = bad_data
except FileNotFoundError:
print('文件不存在!')
except Exception:
print('出现了异常情况!')
#接下来我们打印异常的具体信息
try:
f = open('test_info.txt')
except FileNotFoundError as e:
print(e)
except Exception as e:
print(e)
#打印结果No such file or directory: 'test_info.txt'
#如果没有发生异常的情况
#可用else做一些代码处理逻辑
try:
f = open('testinfo.txt')
except FileNotFoundError as e:
print(e)
except Exception as e:
print(e)
else:
print(f.read())
f.close()
#打印文件内容:人生苦短,需要python
####finally代码块
#不管发布发生异常
#都会执行
try:
f = open('test_info.txt')#文件不存在
except FileNotFoundError as e:
print(e)
except Exception as e:
print(e)
else:
print(f.read())
f.close()
finally:
print('执行finally!!')
###使用raise抛出异常
#可以是自己定义的异常
try:
f = open('testinfo.txt')#文件存在
if f.name == 'testinfo.txt':
raise Exception
except FileNotFoundError as e:
print(e)
except Exception as e:
print("出错了!!!!")
else:
print(f.read())
f.close()
finally:
print('执行finally!!')
以上代码运行得到的结果:
文件不存在!
文件不存在!
出现了异常情况!
[Errno 2] No such file or directory: 'test_info.txt'
人生苦短,需要python
[Errno 2] No such file or directory: 'test_info.txt'
执行finally!!
出错了!!!!
执行finally!!
今天初学python的异常处理就到这里!
下面的是我的公众号二维码图片,欢迎关注。