目录
- 什么是异常?
- 如何捕获异常?
- 1. 异常的写法
- 2. 捕获指定异常
- 3. 捕获多个异常
- 4. 捕获异常的描述
- 5. 捕获所有异常
- 6. 异常的else
- 7. finally
- 8. 自定义异常模块
- 9. 异常传递思路
- 总结
什么是异常?
简单来说,Python解释器是由上到下解析代码,如果代码中间有出现错误,那么下面的代码就不会被执行,终端会直接提示错误异常。所以我们需要去测试,然后进行处理操作,这个过程就是一场处理。
如何捕获异常?
1. 异常的写法
try:
可能发生的错误代码
except (异常类型):
异常后执行的代码
示例代码例一
try:
f = open("wc.txt","r")
except:
print("这个代码错误,不存在wc的文本")
2. 捕获指定异常
try:
print(num)
except NameError:
print('错误')
注意:
- 如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常。
- 一般try下方只放一行尝试执行的代码。
3. 捕获多个异常
try:
print(1/0)
except (NameError,ZeroDivisionError):
print("有错误")
需要捕获多个异常的时候,使用元组方法书写异常类型,如上代码的操作就可以。
4. 捕获异常的描述
那么捕获异常的时候,如果我们有特定需要,想要了解异常类型的内容,我们可以这么做!
try:
print(num)
except (NameError,ZeroDivisionError) as result:
print(result)
5. 捕获所有异常
单独记忆各种异常类型实际很麻烦,不过python里有个定义了所有异常类型的父类Exception,可以直接拿来使用,避免了指定异常的麻烦。
try:
print(num)
except Exception as result:
print(result)
6. 异常的else
那代码错误,有可执行的代码继续执行,那要是代码正确怎么处理?当然要让被检测的代码继续执行,这时候就要用else这关键字。
try:
print(1)
except Exception as result:
print(result)
else:
print("我是else,这行代码没有异常")
7. finally
表示无论发生神都需要执行的代码
try:
f = open(''text.text,'r')
except Exception as result:
print('没有异常')
finally:
f.close()
8. 自定义异常模块
从标题可以理解,就是要对我们的异常做自己的定义,这里需要用到类来操作的。
class ShorInputError(Exception):
def __init__(self,length,min_len):
self.length = length
self.min_len = min_len
def __str__(self):
return f'您输入的长度为{self.length},不能少于{self.min_len}字符'
def main():
try:
con = input('请输入密码:')
if len(con) < 3 :
raise ShorInputError(len(con),3)
except Exception as result:
print(result)
else:
print("密码输入完成")
main()
9. 异常传递思路
需求1:尝试只读打开text.text 文件若存在则读取内容,不存在则提示内容不存在
需求2:读取内容:循环读取,当无内容的时候退出循环,如果有用户意外中断,提示用户意外操作中断
import time
try:
f = open('text.txt', 'r')
try:
while True:
content = f.readline()
if len(content) == 0:
break
time.sleep(2)
print(content)
except:
print("操作异常,文件读取停止")
finally:
f.close()
print('文件关闭')
except:
print('不存在')
总结
总结就是没有总结
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)