08 | 异常处理:如何提高程序的稳定性?
该思维导图由 AI 生成,仅供参考
错误与异常
- 深入了解
- 翻译
- 解释
- 总结
异常处理在Python中是一项重要的机制和代码规范。本文首先介绍了错误与异常的概念,强调了它们的联系和区别。接着详细讲解了异常处理的方法,包括使用try和except来捕获异常,并介绍了多种处理异常的技巧。此外,文章还提到了finally的用法,以及如何自定义异常类型。异常处理对于提高程序的稳定性至关重要,读者可以通过本文快速了解异常处理的基本概念和在Python中的应用方法。 在文章中,还强调了异常处理的使用场景和注意点。作者指出,异常处理通常用于处理无法确定代码能否成功执行的情况,比如数据库的连接、读取等。然而,也警示读者不要滥用异常处理,避免对阅读和协作造成障碍。文章最后提出了一个思考题,让读者思考在异常处理时,如果try block中有多处抛出异常,需要使用多个try except block吗,以及给出了两种不同的写法,让读者思考哪种更好。 总的来说,本文通过实际场景的例子和技术细节,帮助读者全面了解了Python中异常处理的重要性、基本概念和应用方法。读者可以从中获得丰富的技术知识和实践经验,提高对异常处理的理解和运用能力。
《Python 核心技术与实战》,新⼈⾸单¥59
全部留言(95)
- 最新
- 精选
- 小云同学老师,看到异常这一讲,忽然想起了一个问题,一直困扰着我 e = 1 try: 1 / 0 except ZeroDivisionError as e: pass print(e) # NameError: name 'e' is not defined 这里为什么会显示e没有被定义呢?
作者回复: 你可以阅读官方文档:https://docs.python.org/3/reference/compound_stmts.html#the-try-statement "When an exception has been assigned using as target, it is cleared at the end of the except clause." 比如下面这个code block: except E as N: foo 就等于 except E as N: try: foo finally: del N 因此你例子中的e最后被delete了,所以会抛出NameError
2019-05-276164 - Hoo-Ah第一种写法更加简洁,易于阅读。而且except后面的错误类型先抛出数据库连接错误,之后才抛出查询错误,实现的异常处理和第二种一样。
作者回复: 正解
2019-05-27293 - liput想请问老师,在facebook里面开发,对于异常处理有什么规范需要遵循吗?自定义异常、抛异常、捕获异常,粒度一般怎么把控呢? 与此相应的,我对日志输出也有同样的疑问,希望老师能结合您在大公司里的实战经验多讲讲。
作者回复: 我会在最后一章里对大公司开发的规范,流程做一个详细的介绍。通常来说,异常能用内置的exception就用,如果需要自定义就自定义,看实际的需求。一般来说异常抛出,我们都会对其进行Log(一般每1000次log一次),输出到real time的table和dashboard里,这样有利于之后的分析和改进。
2019-05-27316 - John Si1. 第一種寫法比第二種寫法簡潔 2. 因我對try語法執行流程不太清楚,還是老師跟熟悉該同學多講解一下。但我自己想法是第二種寫法跟巢狀迴圈寫法很像,假設是第二句語法發生錯誤,第二種寫法會多執行一次try 語句,從而增加了程序運行時間。 綜上所述,我認為第一種寫法較第二種好
作者回复: 正解
2019-05-274 - 小豹子老师,系统异常,非系统异常能举个例子说明下吗?
作者回复: 系统异常比如说keyboardInterrupt
2019-05-273 - Kevin从代码行数看第一种更简洁,第一种中,使用了一个try..expect将异常统一处理,代码简洁, 第二种,代码中有嵌套,
作者回复: 正解
2020-06-171 - 王大华第一种和第二种效果类似, 都是先检查数据库连接异常,再检查query执行的异常。 更喜欢这种写法: try: db = DB.connect('<db path>') # 可能会抛出异常 raw_data = DB.queryData('<viewer_id>') # 可能会抛出异常 except DBConnectionError as err: print('ConnectionError: {}'.format(err)) except DBQueryDataError as err: print('QueryDataError: {}'.format(err))
作者回复: 回答的很对
2020-02-0221 - 一粒老师,什么样的代码才是您说的“flow-control”
作者回复: 比如条件语句 if,循环语句for,while等等
2020-01-021 - Geek_David个人觉得这个课还要加上一本python的书,那就天衣无缝了
作者回复: 书的话内容太过冗余了,这个课就是提炼一些精华了
2020-03-29 - 百年老师的课收获比较大,Python基础课也学过,Python核心机制也学过一点,但是一写代码,特别是实时读写文件,总是报一大堆错误,这结课真的是运用上了。
作者回复: 谢谢支持,也请多多分享给你的朋友
2019-05-29