Python核心技术与实战
景霄
Facebook资深工程师
立即订阅
13891 人已学习
课程目录
已完结 46 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 从工程的角度深入理解Python
免费
基础篇 (14讲)
01 | 如何逐步突破,成为Python高手?
02 | Jupyter Notebook为什么是现代Python的必学技术?
03 | 列表和元组,到底用哪一个?
04 | 字典、集合,你真的了解吗?
05 | 深入浅出字符串
06 | Python “黑箱”:输入与输出
07 | 修炼基本功:条件与循环
08 | 异常处理:如何提高程序的稳定性?
09 | 不可或缺的自定义函数
10 | 简约不简单的匿名函数
11 | 面向对象(上):从生活中的类比说起
12 | 面向对象(下):如何实现一个搜索引擎?
13 | 搭建积木:Python 模块化
14 | 答疑(一):列表和元组的内部实现是怎样的?
进阶篇 (11讲)
15 | Python对象的比较、拷贝
16 | 值传递,引用传递or其他,Python里参数是如何传递的?
17 | 强大的装饰器
18 | metaclass,是潘多拉魔盒还是阿拉丁神灯?
19 | 深入理解迭代器和生成器
20 | 揭秘 Python 协程
21 | Python并发编程之Futures
22 | 并发编程之Asyncio
23 | 你真的懂Python GIL(全局解释器锁)吗?
24 | 带你解析 Python 垃圾回收机制
25 | 答疑(二):GIL与多线程是什么关系呢?
规范篇 (7讲)
26 | 活都来不及干了,还有空注意代码风格?!
27 | 学会合理分解代码,提高代码可读性
28 | 如何合理利用assert?
29 | 巧用上下文管理器和With语句精简代码
30 | 真的有必要写单元测试吗?
31 | pdb & cProfile:调试和性能分析的法宝
32 | 答疑(三):如何选择合适的异常处理方式?
量化交易实战篇 (8讲)
33 | 带你初探量化世界
免费
34 | RESTful & Socket: 搭建交易执行层核心
35 | RESTful & Socket: 行情数据对接和抓取
36 | Pandas & Numpy: 策略与回测系统
免费
37 | Kafka & ZMQ:自动化交易流水线
38 | MySQL:日志和数据存储系统
39 | Django:搭建监控平台
40 | 总结:Python中的数据结构与算法全景
技术见闻与分享 (4讲)
41 | 硅谷一线互联网公司的工作体验
42 | 细数技术研发的注意事项
加餐 | 带你上手SWIG:一份清晰好用的SWIG编程实践指南
43 | Q&A:聊一聊职业发展和选择
结束语 (1讲)
结束语 | 技术之外的几点成长建议
Python核心技术与实战
登录|注册

32 | 答疑(三):如何选择合适的异常处理方式?

景霄 2019-07-22
你好,我是景霄。
不知不觉中,我们又一起完成了第三大章规范篇的学习。我非常高兴看到很多同学一直在坚持积极地学习,并且留下了很多高质量的留言,值得我们互相思考交流。也有一些同学反复推敲,指出了文章中一些表达不严谨或是不当的地方,我也表示十分感谢。
大部分留言,我都在相对应的文章中回复过了。而一些手机上不方便回复,或是很有价值很典型的问题,我专门摘录了出来,作为今天的答疑内容,集中回复。

问题一:应该使用哪种异常处理方式?

第一个问题是 code2 同学的疑惑。下面这两种处理的风格,哪一种风格更有效、更优雅?
第一种,在代码中对数据进行检测,并直接处理与抛出异常。
第二种,在异常处理代码中进行处理。
其实,第一种方法,可以翻译成下面的“if…elif…”语句:
if [condition1]:
raise Exception1('exception 1')
elif [condition2]:
raise Exception2('exception 2')
...
而第二种方法,则对应着下面异常处理的代码:
try:
...
except Exception as e:
...
这两种方法很大的一个区别是,第一种方法一旦抛出异常,那么程序就会终止;而在第二种方法中,如果抛出异常,会被程序捕获(catch),程序还会继续运行。这也是我们选择这两种方法的重要依据。当然,在实际工作中,到底使用哪一种方法,还是取决于具体的场景。
比方说,一个模块的功能是对输入进行检测,如果输入不合法,则弹出对话框进行提示,并终止程序。那么,这种情况下,使用第一种方法更加合理。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Python核心技术与实战》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(9)

  • Geek_d848f7
    老师,结合我们这段时间的学习,有没有短小精悍的项目推荐,想学习别人怎么组织代码

    作者回复: 这个你去github上找些popular的项目就可以啦

    2019-07-22
    5
  • 姜饼人
    老师,能不能介绍一下你在FB的时候,关于jupyter notebook的一些规范和风格,和最佳实践
    2019-08-02
    2
  • enjoylearning
    有没有web api的好工具推荐呢,虽然在用swagger,但感觉集成到项目侵入性太强,不优雅

    作者回复: 测试的话postman就可以了。具体工程中python一般用dijando或者flask的框架

    2019-07-22
    2
    2
  • 老师,对于异常捕获选择异常条件有什么技巧吗?不太会去选择。对于服务端,我的异常打印到日志文件中,是全部异常都打印,还是筛选出具体异常的位置进行打印?

    作者回复: 这个看具体需求,一般来说都会打印的,但是会downsample,比如每1000次打印一次,减小服务器压力

    2019-07-22
    1
    2
  • 旗木卡卡
    问题二、产品设计的时候就应该同时考虑到功能规划和代码结构,设计的合理,代码结构自然也会好很多。
    2019-07-27
  • Michael
    项目中结合:isort, flake8(pylint), black(yapf), pytest, mypy 这些工具,写出来的代码在质量上肯定有不少的提升
    2019-07-24
  • code2
    在C++中,构造函数中出现异常由编译器来处理,不需要程序员参与,在python重视如何处理的?由解释器处理吗?
    2019-07-23
  • 图·美克尔
    单元测试代码对于自己或者别人维护你之前的代码也是很重要的。
    2019-07-23
  • 小侠龙旋风
    谢谢老师的问答,请问,有没有写得比较好的API案例推荐。
    2019-07-22
收起评论
9
返回
顶部