如何編寫捕獲全部異常的try
/ except
塊? html
您能夠執行此操做來處理常規異常 python
try: a = 2/0 except Exception as e: print e.__doc__ print e.message
要捕獲全部可能的異常,請捕獲BaseException
。 它位於異常層次結構之上: 測試
Python 3: https : //docs.python.org/3.5/library/exceptions.html#exception-hierarchy this
Python 2.7: https : //docs.python.org/2.7/library/exceptions.html#exception-hierarchy 編碼
try: something() except BaseException as error: print('An exception occurred: {}'.format(error))
但正如其餘人提到的那樣,除非你有充分的理由,不然你一般不會這樣作。 spa
我剛剛發現了這個小技巧,用於測試Python 2.7中的異常名稱。 有時我在代碼中處理了特定的異常,因此我須要一個測試來查看該名稱是否在處理的異常列表中。 code
try: raise IndexError #as test error except Exception as e: excepName = type(e).__name__ # returns the name of the exception
try: whatever() except: # this will catch any exception or error
值得一提的是,這不是正確的Python編碼。 這將捕獲您可能不想捕獲的許多錯誤。 orm
你能夠,但你可能不該該: htm
try: do_something() except: print "Caught it!"
可是,這也會捕獲像KeyboardInterrupt
這樣的異常,你一般不但願這樣,是嗎? 除非您當即從新提出異常 - 請參閱文檔中的如下示例: ip
try: f = open('myfile.txt') s = f.readline() i = int(s.strip()) except IOError as (errno, strerror): print "I/O error({0}): {1}".format(errno, strerror) except ValueError: print "Could not convert data to an integer." except: print "Unexpected error:", sys.exc_info()[0] raise