作者uranusjr (←这人是超级笨蛋)
看板Python
标题Re: [翻译] Google 建议的 Python 风格指南 4
时间Sun Apr 28 00:18:59 2013
注释一下
※ 引述《sandwichC (没回应=挂站)》之铭言:
: 原文网址:http://google-styleguide.googlecode.com/svn/trunk/pyguide.html
: 的 exception。因此,应尽可能避免使用 catch-all except。少数可以使用
: catch-all except 的情形有: re-raising exception (编案:re-raise 是一种
: python 常用的手法用来重现刚抛出的异常)、或者你已经在最外层的程式中而想要
: 补捉所有你没考虑到的 exception 以印出错误的细节。
Re-raising
try:
something()
except:
print 'Something bad just happened.'
raise
这边的 raise 就是所谓的 re-raise
代表的意思是「我刚刚抓到的 exception 不管它是什麽麻烦照样继续丢出去」
上面程式码的意义与下面的版本基本相同:
try:
something()
except Exception as e:
print 'Something bad just happened.'
raise e
不过方便很多
: 让 try/except 区块中的程式码尽量少。try 区块中的程式码愈长,其中愈有可能
: 出现意料之外的错误,这些意外的错误可能因为 except 区块而被隐藏。
: 用 finally 来处理无论意外发生与否都应该要执行的程式片段。这常被用来清理资
: 源,如:关闭档案。
这里有一个没有提到的东西, 可以用来改善 try/except 造成的流程问题
Python 的 try/except block 还有一个额外的元件 else
try:
do_something()
except:
do_this_if_something_failed()
else:
do_this_if_something_succeeded_but_dont_catch_exceptions_in_this()
finally:
always_do_this()
善用 else 会让你省去很多很可怕的嵌套 try-blocks
如果你一嵌下去程式就会变成火星流程了
一旦你感觉自己需要在 try 里面(或外面)又加一个 try
请思考有没有可能改用 else
--
╱ ̄ ̄ ̄╲
▏
◢█◣ ▏
︻█︻█ ▏
成龙表示: 是喔...
′/ ‵ ▏
╰╯ █╱
ψQSWEET ◥︶█◤
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.81.146
1F:推 timTan:多谢提醒阿~~ 04/29 18:33