password
URL
type
status
date
slug
summary
tags
category
icon
标签
是否汉化
📌
日出有盼,日落有念。心有所期,忙而不茫。

python_自定义异常

e.g.

➡️
这段代码定义了一个自定义的异常类MyError,并在try块中主动抛出这个异常。
关键点:
  1. MyError继承自Exception,所以它是一个异常类。
  1. __init__方法允许指定异常信息msg。
  1. __str__方法打印异常信息。
  1. 在try块中使用raise主动抛出MyError异常。
  1. except块捕获MyError异常,并通过e.msg打印出异常信息。
所以执行流程是:
  1. 定义MyError异常类。
  1. try块执行raise抛出MyError异常。
  1. except捕获该异常,并打印异常信息'类型错误'。
  1. 所以最终输出结果是:'My exception occurred 类型错误'
这个例子展示了如何定义自定义的异常类,并在程序中主动抛出和捕获该异常,从而进行自定义的异常处理。

request 自定义异常举例

使用requests模块时,自定义异常可以用来处理各种异常情况,比如:
  • 处理特定状态码的响应
  • 处理请求超时
  • 处理 JSON 解码失败
  • 处理无效的参数
这样通过自定义异常类,可以方便对requests各种异常情况进行处理,使代码更加清晰可读。
  • other
说明:
1、timeout为在XX秒内返回响应结果,若未返回则判断为响应超时
2、Exception异常不能写在最上面,否则会直接捕获而无法抛出后面的异常判断,因为所有异常都继承于Exception这个父类

参考

Python异常及处理方法总结

异常执行顺序

  1. 完整的格式顺序是:try —> except X —> except —> else—> finally
  1. 如果 else 和 finally 都存在的话,else 必须在 finally 之前,finally 必须在整个程序的最后。
  1. else 的存在是以 except 或 except X 的存在为前提,如果没有 except,而在 try 中使用 else 的话,会出现语法错误。

说明:

  • try:正常执行的程序,如果执行过程中出现异常,则中断当前的程序执行,跳转到对应的异常处理模块中;
  • except:(可选)如果异常与A/B相匹配,则跳转到对应的except A/B中执行;如果A、B中没有相对应的异常,则跳转到except中执行。(这个except块是可选的,如果没有提供,则执行python默认的异常处理程序,即:中断执行,打印提示信息)
  • else:(可选)如果try中的程序执行过程中没有发生错误,则会继续执行else中的程序;
  • finally:无论是否发生异常,只要提供了finally程序,就在执行所有步骤之后执行finally中的程序。

总的来说:

正常执行的程序在try下面执行,在执行中如果发生了异常,则中断当前执行然后执行except中的部分,如果没有异常即不执行except的情况下,则会执行else中的语句,finally语句是最后无论是否有异常都要执行的代码。
 
 

🎒
离开乏味的皮囊,自由的灵魂在路上
  • Name: Alan Hsu
  • Tag: 随感、技术、经验、旅行、推荐、生活、音乐、电影 etc.
  • Email:xulanzhong521gmail.com
  • WeChat: Alan_Hsu_521
notion image
notion image
 
 
python_高阶函数(装饰器)自动化测试_埋点自动化测试实践
Loading...