32 | 答疑(三):如何选择合适的异常处理方式?
景霄
该思维导图由 AI 生成,仅供参考
你好,我是景霄。
不知不觉中,我们又一起完成了第三大章规范篇的学习。我非常高兴看到很多同学一直在坚持积极地学习,并且留下了很多高质量的留言,值得我们互相思考交流。也有一些同学反复推敲,指出了文章中一些表达不严谨或是不当的地方,我也表示十分感谢。
大部分留言,我都在相对应的文章中回复过了。而一些手机上不方便回复,或是很有价值很典型的问题,我专门摘录了出来,作为今天的答疑内容,集中回复。
问题一:应该使用哪种异常处理方式?
第一个问题是 code2 同学的疑惑。下面这两种处理的风格,哪一种风格更有效、更优雅?
第一种,在代码中对数据进行检测,并直接处理与抛出异常。
第二种,在异常处理代码中进行处理。
其实,第一种方法,可以翻译成下面的“if…elif…”语句:
而第二种方法,则对应着下面异常处理的代码:
这两种方法很大的一个区别是,第一种方法一旦抛出异常,那么程序就会终止;而在第二种方法中,如果抛出异常,会被程序捕获(catch),程序还会继续运行。这也是我们选择这两种方法的重要依据。当然,在实际工作中,到底使用哪一种方法,还是取决于具体的场景。
比方说,一个模块的功能是对输入进行检测,如果输入不合法,则弹出对话框进行提示,并终止程序。那么,这种情况下,使用第一种方法更加合理。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文主要围绕异常处理方式、代码优化和注释、项目API文档等技术问题展开讨论。作者首先解答了读者提出的关于异常处理方式选择的问题,指出了两种不同方式的优缺点及适用场景。其次,作者强调了在编写代码时应同时注重功能完整和规范完整,避免后期出现大量bug和难以维护的情况。此外,作者还讨论了代码中注释的适量使用以及项目API文档的重要性。通过具体案例和经验分享,读者可以获得关于技术规范和最佳实践的宝贵建议。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Python 核心技术与实战》,新⼈⾸单¥59
《Python 核心技术与实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(12)
- 最新
- 精选
- Geek_d848f7老师,结合我们这段时间的学习,有没有短小精悍的项目推荐,想学习别人怎么组织代码
作者回复: 这个你去github上找些popular的项目就可以啦
2019-07-2216 - enjoylearning有没有web api的好工具推荐呢,虽然在用swagger,但感觉集成到项目侵入性太强,不优雅
作者回复: 测试的话postman就可以了。具体工程中python一般用dijando或者flask的框架
2019-07-22514 - 老师,对于异常捕获选择异常条件有什么技巧吗?不太会去选择。对于服务端,我的异常打印到日志文件中,是全部异常都打印,还是筛选出具体异常的位置进行打印?
作者回复: 这个看具体需求,一般来说都会打印的,但是会downsample,比如每1000次打印一次,减小服务器压力
2019-07-2228 - Michael项目中结合:isort, flake8(pylint), black(yapf), pytest, mypy 这些工具,写出来的代码在质量上肯定有不少的提升2019-07-249
- 姜饼人老师,能不能介绍一下你在FB的时候,关于jupyter notebook的一些规范和风格,和最佳实践2019-08-0218
- 小侠龙旋风谢谢老师的问答,请问,有没有写得比较好的API案例推荐。2019-07-222
- Geek_6e549c游戏开发更迭快 从来没有文档2020-09-271
- Geek_aa780e在web项目中,异常在哪层进行捕获比较好呢? 比如说handler->service ->model, 日志在哪里打印比较好 ?2020-08-051
- 旗木卡卡问题二、产品设计的时候就应该同时考虑到功能规划和代码结构,设计的合理,代码结构自然也会好很多。2019-07-271
- code2在C++中,构造函数中出现异常由编译器来处理,不需要程序员参与,在python重视如何处理的?由解释器处理吗?2019-07-231
收起评论