Fw: [翻译] Google 建议的 Python 风格指南 4

楼主: sandwichC ( )   2013-04-27 23:08:15
※ [本文转录自 Python 看板 #1HU-dLx9 ]
作者: sandwichC (没回应=挂站) 看板: Python
标题: [翻译] Google 建议的 Python 风格指南 4
时间: Sat Apr 27 23:08:01 2013
原文网址:http://google-styleguide.googlecode.com/svn/trunk/pyguide.html
* Exceptions
Exception 应小心使用。
释义:
Exception 用来中断正常的程式逻辑,以应付错误及非预期的状况。
优点:
程式主体不会被处理错误的程式所搅乱。当状况发生时,exception 能够直接从深
层的程式中直接跳出。如:从 n 层的函式中直接返回,而不需要一层一层地处理
回传的错误代码。
缺点:
整个程式的流程可能变得令人困惑。
决策:
使用 exception 必须遵守一些法则。
需要 raise exception 时,使用以下两种格式:
raise MyException('Error message'),或者 raise Exception。
不要使用以下这几种格式 (虽然它们目前仍是合法的格式):
raise MyException, 'Error message',或 raise 'Error message'。
module 或 package 应该要继承内建的 exception 类别来定义自己的 exception 类
别,一个 module 的 base exception 得命名为 Error:
class Error(Exception):
pass
Python 里的 catch-all except 会补捉所有的意外事件,包括:拼字错误、使用
sys.exit()、Ctrl+C 键盘中断、unittest 中不符合预期的项目、及任何非预期内
的 exception。因此,应尽可能避免使用 catch-all except。少数可以使用
catch-all except 的情形有: re-raising exception (编案:re-raise 是一种
python 常用的手法用来重现刚抛出的异常)、或者你已经在最外层的程式中而想要
补捉所有你没考虑到的 exception 以印出错误的细节。
让 try/except 区块中的程式码尽量少。try 区块中的程式码愈长,其中愈有可能
出现意料之外的错误,这些意外的错误可能因为 except 区块而被隐藏。
用 finally 来处理无论意外发生与否都应该要执行的程式片段。这常被用来清理资
源,如:关闭档案。
在捕捉例外时,使用 as 来取代逗点,如:
try:
raise Error
except Error as error:
pass
编案:as 的用法在较新的 python 版本才开始支援,某些 code 用逗点只是语言演
变的历史因素。

Links booklink

Contact Us: admin [ a t ] ucptt.com