python异常处理
基本格式
try:
#代码
except Exception as e:
#try中的代码有异常,此代码块中的代码会执行
try:
#代码
except Exception as e:
#try中的代码有异常,次代码块中的代码会执行
finally:
#无论try中的代码是否报错,都执行
常见应用场景:
- 调用微信app实现微信消息的推送,微信支付等
- 支付宝支付,视频播放等
- 数据库或redis连接和操作
- 调用第三方的视频播放发送功能,由第三方的程序出问题导致的错误
1.异常分类
异常细分处理示例
import requests
from requests import exceptions
while True:
url = input("请输入要下载网页地址:")
try:
res = requests.get(url=url)
print(res)
except exceptions.MissingSchema as e:
print("URL架构不存在")
except exceptions.InvalidSchema as e:
print("URL架构错误")
except exceptions.InvalidURL as e:
print("URL地址格式错误")
except exceptions.ConnectionError as e:
print("网络连接错误")
except Exception as e:
print("代码出现错误", e)
# 提示:如果想要写的简单一点,其实只写一个Exception捕获错误就可以了。
错误细分处理
try:
# 逻辑代码
pass
#key错误
except KeyError as e:
# 小兵,只捕获try代码中发现了键不存在的异常,例如:去字典 info_dict["n1"] 中获取数据时,键不存在。
print("KeyError")
#值错误
except ValueError as e:
# 小兵,只捕获try代码中发现了值相关错误,例如:把字符串转整型 int("无诶器")
print("ValueError")
except Exception as e:
# 王者,处理上面except捕获不了的错误(可以捕获所有的错误)。
print("Exception")
2.自定义异常&抛出异常
自定义异常
class MyException(Exception):
pass
try:
#代码
except MyException as e:
print('MyException异常',e)
except Exception as e:
#try中的代码有异常,此代码块中的代码会执行
print('Exception',e)
触发异常
class MyException(Exception):
pass
try:
rasie MyException()
except MyException as e:
print('MyException异常',e)
except Exception as e:
#try中的代码有异常,此代码块中的代码会执行
print('Exception',e)
3.特殊的finally
try:
#代码
except Exception as e:
#try中的代码有异常,次代码块中的代码会执行
finally:
#无论是否报错,都执行
在函数中,即使定义了return,也会执行finally代码块的代码
def func():
try:
#代码
print(111)
return 123
except Exception as e:
#try中的代码有异常,次代码块中的代码会执行
finally:
#无论是否报错,
print(666)
func()
111
666
3554

被折叠的 条评论
为什么被折叠?



