2016-02-19 47 views
1

如果我提出了一個Python例外,這裏就是我得到:格式異常作爲Python做

raise Exception("Hello world") 
Traceback (most recent call last): 

    File "<ipython-input-24-dd3f3f45afbe>", line 1, in <module> 
    raise Exception("Hello world") 

Exception: Hello world 

注意最後一行寫着Exception: Hello world。鑑於例外(),我怎樣才能產生這樣的文字?以下工作無:

str(foo) 
Out[27]: 'Hello world' 

repr(foo) 
Out[28]: "Exception('Hello world',)" 

"{}".format(foo) 
Out[29]: 'Hello world' 

"{}: {}".format(type(foo), foo) 
Out[30]: "<type 'exceptions.Exception'>: Hello world" 
+0

你爲什麼要這麼做? –

+0

爲什麼不只是''例外:{}'.format(foo)'? –

+0

@ cricket_007,我在一個上下文中輸出寫入控制檯可能不會被看到,所以我想要捕獲異常,顯示它,很好地格式化,在消息框中(使用[EasyGUI]( http://easygui.sourceforge.net/)在我的情況),然後再提高它。 – kuzzooroo

回答

2

如果異常對象是exc,則:

  • 冒號之前的部分是type(exc).__name__
  • 冒號後的部分是str(exc)

所以你可以這樣做:

print('{}: {}'.format(type(exc).__name__, exc)) 
+0

謝謝。不幸的是\ _ \ _ name__不能在'dir(type(foo))中顯示出來'或者我可能已經找到了。 – kuzzooroo

+0

它記錄在[這裏](https://docs.python.org/3/reference/datamodel.html#the-standard-type-hierarchy)(向下滾動一下...) – Kevin