2016-11-30 67 views
1

一條語句我有這樣的說法:如何拋出超過1個可能的例外是在Python中

try: 
    cx_oracle..connect(username/[email protected]:port/service) 
except cx_Oracle.DatabaseError: 
    #do_stuff 

比方說,我提供了一個有效的username,空password,無效hostname和無效service名稱;並且我在except塊內寫入條件,以便基於Oracle錯誤代碼完成某些操作。

如何在不更正發生的第一個錯誤的情況下列出所有可能的數據庫錯誤?

Actual o/p: TNS: listener does not currently know of service requested 
Required o/p: TNS: listener does not currently know of service requested 
       empty password 
       Invalid host 

回答

2

你可以把多個錯誤放在一個元組中。然後你可以通過e訪問任何錯誤。

try: 
    cx_oracle..connect(username/[email protected]:port/service) 
except (cx_Oracle.DatabaseError, Error1, Error2) as e: 
    # do stuff 

您也可以有多個excepts。

try: 
    cx_oracle..connect(username/[email protected]:port/service) 
except cx_Oracle.DatabaseError: 
    # do stuff 
except Error1: 
    # do stuff 
+0

我有超過1個數據庫錯誤的可能性和代碼只顯示第一次發生的錯誤 – dbase

+0

我不知道你的錯誤的名稱,但基本上你可以用你想要捕獲的錯誤代替「Error1」和「Error2」,包括不同的數據庫錯誤 – Navidad20

0

我不是很久以前也有類似的問題,發現計算器這個地方,它捕獲多個錯誤:

try: 
     cur.execute("insert into project_source_code(project, path) values(:project_id,:prj_path)",(project_id, prj_path)) 

    except cx_Oracle.DatabaseError as e: 
     error, = e.args 
     print(error.code) 
     print(error.message) 
     print(error.context) 
相關問題