python异常处理

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

你可能感兴趣的:(#,python基础,python,异常值处理)