如果你在寫python程式時遇到異常後想進行如下處理的話,一般用try來處理異常,假設有下面的一段程式:
<code>try</code><code>:</code>
<code> </code><code>語句</code><code>1</code>
<code> </code><code>語句</code><code>2</code>
<code> </code><code>.</code>
<code> </code><code>語句N</code>
<code>except</code> <code>.........:</code>
<code> </code><code>do something .......</code>
但是你并不知道"語句1至語句N"在執行會出什麼樣的異常,但你還要做異常處理,且想把出現的異常列印出來,并不停止程式的運作,是以在"except ......"這句應怎樣來寫呢?
總結了一下3個方法:
方法一:捕獲所有異常
<code>try</code><code>: </code>
<code> </code><code>a</code><code>=</code><code>b </code>
<code> </code><code>b</code><code>=</code><code>c </code>
<code>except</code> <code>Exception,e: </code>
<code> </code><code>print</code> <code>Exception,</code><code>":"</code><code>,e</code>
方法二:采用traceback子產品檢視異常
<code>#引入python中的traceback子產品,跟蹤錯誤</code>
<code>import</code> <code>traceback </code>
<code>except</code><code>: </code>
<code> </code><code>traceback.print_exc()</code>
方法三:采用sys子產品回溯最後的異常
<code>#引入sys子產品</code>
<code>import</code> <code>sys </code>
<code> </code><code>info</code><code>=</code><code>sys.exc_info() </code>
<code> </code><code>print</code> <code>info[</code><code>0</code><code>],</code><code>":"</code><code>,info[</code><code>1</code><code>]</code>
但是,如果你還想把這些異常儲存到一個日志檔案中,來分析這些異常,那麼請看下面的方法:
把 traceback.print_exc() 列印在螢幕上的資訊儲存到一個文本檔案中
<code>import</code> <code>traceback</code>
<code> </code><code>f</code><code>=</code><code>open</code><code>(</code><code>"c:log.txt"</code><code>,</code><code>'a'</code><code>) </code>
<code> </code><code>traceback.print_exc(</code><code>file</code><code>=</code><code>f) </code>
<code> </code><code>f.flush() </code>
<code> </code><code>f.close()</code>
<code></code>
本文轉自 奚落123 51CTO部落格,原文連結:http://blog.51cto.com/guyuyuan/1935004,如需轉載請自行聯系原作者