当前位置: 首页 > news >正文

[量化投资-学习笔记017]Python+TDengine从零开始搭建量化分析平台-异常处理

一个完成的程序一定少不了对异常的处理,以及错误日志的输出。

在之前章节的程序中对这两部分没有进行说明,以下用两个单独的章节进行介绍。
[量化投资-学习笔记016]Python+TDengine从零开始搭建量化分析平台-日志输出

异常处理

Python 通常使用 try .. except 和防御式编程来处理异常。

try:#可能会出现异常代码
except ErrorType1:#处理 ErroType1 类型异常
except ErrorType2:#处理 ErroType2 类型异常
else:#如果没有异常,执行的代码
finally:#不管是否有异常,都执行的代码。
  • elsefinally 不是必须的。
  • try .. except 对性能消耗不大,而防御式编程有可能带来更大消耗。
  • 不建议用 except 捕捉所有异常。

示例代码如下:

def request_post(url, sql, user, pwd):data = []sql = sql.encode("utf-8")headers = {'Connection': 'keep-alive','Accept-Encoding': 'gzip, deflate, br'}try:result = requests.post(url, data=sql, auth=HTTPBasicAuth(user,pwd),headers=headers)except OSError as e:print(e)print(f"Cannot connect to {url}")else:text=result.content.decode()data = json.loads(text)if len(data) < 1:print("Response message Error!")return dataelse:return data

异常类型汇总

异常名称类型描述
BaseException所有异常的基类
SystemExit解释器请求退出
KeyboardInterrupt用户中断执行(通常是输入^C)
Exception常规错误的基类
StopIteration迭代器没有更多的值
GeneratorExit生成器(generator)发生异常来通知退出
StandardError所有的内建标准异常的基类
ArithmeticError所有数值计算错误的基类
FloatingPointError浮点计算错误
OverflowError数值运算超出最大限制
ZeroDivisionError除(或取模)零
AssertionError断言语句失败
AttributeError对象没有这个属性
EOFError没有内建输入,到达EOF
EnvironmentError操作系统错误的基类
IOError输入/输出操作失败
OSError操作系统错误
WindowsError系统调用失败
ImportError导入模块/对象失败
LookupError无效数据查询的基类
IndexError序列中没有此索引(index)
KeyError映射中没有这个键
MemoryError内存溢出错误
NameError未声明/初始化对象
UnboundLocalError访问未初始化的本地变量
ReferenceError弱引用
RuntimeError一般的运行时错误
NotImplementedError尚未实现的方法
SyntaxErrorPython
IndentationError缩进错误
TabErrorTab
SystemError一般的解释器系统错误
TypeError对类型无效的操作
ValueError传入无效的参数
UnicodeErrorUnicode
UnicodeDecodeErrorUnicode
UnicodeEncodeErrorUnicode
UnicodeTranslateErrorUnicode
Warning警告的基类
DeprecationWarning关于被弃用的特征的警告
FutureWarning关于构造将来语义会有改变的警告
OverflowWarning旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning关于特性将会被废弃的警告
RuntimeWarning可疑的运行时行为
SyntaxWarning可疑的语法的警告
UserWarning用户代码生成的警告

参考:

  1. Python异常(try…except)对代码运行性能的影响
  2. Python try 和 if 语句的区别
http://www.lryc.cn/news/231266.html

相关文章:

  • Mysql中的索引与事务和B树的知识补充
  • 2024上海国际智能驾驶技术展览会(自动驾驶展)
  • 嵌入式Linux开发,NFS文件系统挂载
  • 什么是3D建模中的“高模”和“低模”?
  • python数据结构与算法-04_队列
  • 从理论到实践:深度解读BIO、NIO、AIO的优缺点及使用场景
  • Mysql Innodb Cluster集群搭建 - docker
  • 如何在 macOS 中删除 Time Machine 本地快照
  • mysql的sql_mode参数
  • 模拟业务流程+构造各种测试数据,一文带你测试效率提升80%
  • 【linux】 Shell函数返回值
  • 面试:容器技术
  • 在Linux中nacos集群模式部署
  • 7天入门python系列之爬取热门小说项目实战,互联网的东西怎么算白嫖呢
  • 产品经理墨刀学习----注册页面
  • 算法通关村——归并排序
  • SDL2 播放音频数据(PCM)
  • 优秀智慧园区案例 - 重庆AI PARK智慧创意园区,先进智慧园区建设方案经验
  • 如何编写一个Perl爬虫程序
  • linux查看当前目录大小及磁盘大小
  • windows系统pycharm程序通过urllib下载权重https报错解决
  • Python数据结构: 列表(List)详解
  • 查找py源代码目录
  • React Virtual DOM及Diff算法
  • Spark通过三种方式创建DataFrame
  • 【坑】idea终端下执行maven命令行报错:mvn clean install -Dspring.profiles.active=dev
  • Linux下mysql安装配置教程
  • 在 Electron上安装better-sqlite3出错
  • 利用网络管理解决方案简化网络运维
  • C#中.NET Framework4.8 Windows窗体应用通过EF访问数据库并对数据库追加、删除记录