天天看點

python中try except處理程式異常的三種常用方法

如果你在寫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,如需轉載請自行聯系原作者