相比其它编程语言,Python 输出错误 异常提示信息算是比较齐的。
万事无绝对,世上本无完美的事物,仍需对异常作进一步的处理。
注意,少用以下代码处理异常:
try: do some thing except: pass try: do some thing except Exception: pass
由于这会捕获所有异常,因此,抑制了源代码的所有功能性不足 Bug,不利于后期调试。
以下是一些 Python 错误 异常常见解决办法或策略:
采用专有进程批量采集,所有可能的错误 异常 一般信息。
之后再过滤出错误 异常,一条条加以手动修正。
此方式同常用编程,log 文件功能类似。
只是添加了自动化过滤能力,且进程独立。
某些错误 异常无法避免且偶尔出现,可在适当位置输出其提示信息。
若有可能的话,后期想办法解决;有些问题,可能一时或永远无法解决 (或找到解决办法)。
由于提示信息被输出到调试后端,对用户而言不可见;尽可能通过批量采集获取,方便后期分析错误 异常提示原因。
某些异常无法避免且较少出现,可向用户强制展示信息提示对话框。
若有可能,后期再想办法解决。
某些异常是很难解决的,或由无法避免的外部原因导致。
注意:可向用户强制展示这些异常,增强用户对应用程序的理解 信任,参与异常的解决过程。
由于应用程序设计缺陷、不当参数、编程语言无法理解的语法 变量、编程语言的设计缺陷、等原因造成的异常。
这种异常可能没有提示信息 (或信息不足),如闪崩、卡死、内存突然大幅升高、有规律性的偶尔出错、等等。
注意:无声漏洞本身并非完全无声,包括:调试方法不对、调试者没注意到、应用场景不当或没找到调试入口。
譬如:应用已退出来不及输出异常提示、异常代码目前不使用、上下文关系不明确、 缩进错误不明显。
无声漏洞要花不少时间来解决,需开发者本人、对应用场景理解很深的人或行业专家的深度参与。
此类异常要彻底解决 (或改良),否则,别说影响用户体验,可能连正常使用都成问题。
若某一问题长时间无法被解决且对用户体验影响极差,此应用程序完了。
要体现一个程序员的水平,也就是修正此类问题。
在编写源代码时,存在各种考虑不周的异常很正常。
源代码异常,由开发者解决最好。
对于开源软件,使用者可以自已想办法解决。
若是闭源软件,在没有参考资料的情况下,一般很难解决。
当源代码存在严重且难于修正的异常时,可采用多版本或多种 IDE、多种编译 打包 分发工具、等作为测试入口调试。
可测试整个工程、单模块、单功能,甚至对每个函数、每行代码进行原子化调试。
同样是 Python 技术,在 CPython Cython PyInstaller 下是有差异的。
不同的 CPython 版本之间,也有一些差异。
对于多入口调试,进行单工程 多版本 柔性 并行开发,是有必要的。
比较式开发,便于找出不同版本之间的共性 差异;特别是将工程分为源代码版、调试版、发布版、新版、旧版、稳定版等。
如仅将 Python 2.7 (存在很多现成技术 参考资源) 作为比较参考源,3.4 3.5 3.6 之后的版本只要稳定、操作系统 (或用户和应用场景) 支持,都可以并行推进。
多版本柔性 并行开发不能要求所有版本权重都一样,相对传统 IDE,推荐使用 数字 IDE 。
开发新功能源代码时,开发效率、调试时间及调试频率要适当。
开发很多新功能却很少调试或调试时间花费少,有时会产生意料不到的情况或 Bug。
尤其当出现程序架构、开发逻辑、编程语言、新旧框架或编译器兼容性导致的无声漏洞,调试时会很头痛。
这也是 Python 为什么比 Java C/C++ 等编程语言先天性存在开发优势的原因,编写更少的代码却能获得更多的功能。
相同功能下 Python 源代码量只有 C/C++ 代码量的 20 - 30%,当使用 Cython 编译器 把 Python 代码转换成 C 语言中间代码时就能看到。
另请参阅:
PySide2 PyQt5 错误异常 调试漏洞 疑难杂症 解决办法汇总
版权声明: 本文为独家原创稿件,版权归 乐数软件 ,未经许可不得转载。