password
URL
type
status
date
slug
summary
tags
category
icon
周起始
标签
是否汉化
日出有盼,日落有念。心有所期,忙而不茫。
python_自定义异常
e.g.
这段代码定义了一个自定义的异常类MyError,并在try块中主动抛出这个异常。
关键点:
- MyError继承自Exception,所以它是一个异常类。
- __init__方法允许指定异常信息msg。
- __str__方法打印异常信息。
- 在try块中使用raise主动抛出MyError异常。
- except块捕获MyError异常,并通过e.msg打印出异常信息。
所以执行流程是:
- 定义MyError异常类。
- try块执行raise抛出MyError异常。
- except捕获该异常,并打印异常信息'类型错误'。
- 所以最终输出结果是:'My exception occurred 类型错误'
这个例子展示了如何定义自定义的异常类,并在程序中主动抛出和捕获该异常,从而进行自定义的异常处理。
request 自定义异常举例
使用requests模块时,自定义异常可以用来处理各种异常情况,比如:
- 处理特定状态码的响应
- 处理请求超时
- 处理 JSON 解码失败
- 处理无效的参数
这样通过自定义异常类,可以方便对requests各种异常情况进行处理,使代码更加清晰可读。
- other
说明:
1、timeout为在XX秒内返回响应结果,若未返回则判断为响应超时
2、Exception异常不能写在最上面,否则会直接捕获而无法抛出后面的异常判断,因为所有异常都继承于Exception这个父类
参考
Python异常及处理方法总结
异常执行顺序
- 完整的格式顺序是:try —> except X —> except —> else—> finally
- 如果 else 和 finally 都存在的话,else 必须在 finally 之前,finally 必须在整个程序的最后。
- 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
- Twitter:@AlanHsu521
- Telegram:@AlanHsu521
- WeChat: Alan_Hsu_521
- Github: https://github.com/xsoway/
- Author:Alan_Hsu
- URL:https://xmylog.com/article/articles_python_trycatch
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts