错误try……except……else……finally 记录错误logging 抛出错误raise
1、错误处理机制 try……except……finally
格式:
try:
可能出错的代码
except xxx1Error as e:
处理1
except xxx2Error as e:
处理2
except xxx3Error as e:
处理3
……
else:
处理n
finally:
最终处理
运行步骤:
try语句没错误,执行try、else和finally;
有错误,根据碰到的第一个错误判断执行该错误对应的Error
最后无论有无错误,最后都会执行finally(finally可以省略不写)
2、记录错误
logging模块,使用前要先
import logging
作用:记录错误,并且跳过错误节点,让程序继续进行(正常情况下出错则程序停止运行)
举例:一个除0错误的记录,并在发生错误后程序仍能继续运行后半部分
import logging def foo(s): return 10/int(s) def bar(s): return foo(s)*2 def main(): try: bar('0') except Exception as e: logging.exception(e) finally: print('finally') #运行 main() print('End') #错误发生在main(),而main()后的程序仍能继续运行 Error: division by zero finally End
3、抛出错误raise
如果程序中只是一个单raise,那就会把当前错误原样抛出。
另外,在Except中raise一个Error,还可以把一种类型的错误转化为另一种类型
try: 10/0 except ZeroDivisionError: raise ValueError('input error!')
但应注意符合逻辑,比如就不能把IOError转化为不相干的ValueError
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性