假設我們在 python 模塊中有這個方法
py
class Database():
#..../init, etc
def bulk_insert_query(self, query, dataset: typing.Tuple) -> None:
try:
stmt = ibm_db.prepare(self._conn, query)
ibm_db.execute_many(stmt, dataset)
logging.info("Bulk insert executed successfully.")
except Exception as e:
logging.exception(f"Bulk insert failed: {e}")
我在不同的 python 模塊中呼叫此方法
py
import a.Database
db = a.Database()
try:
db.bulk_insert_query(query = query, dataset = data_to_load)
except:
sys.exit()
我想要實作的是當 a.bulk_insert_query() 由于某種原因失敗時停止執行(到 sys.exit() 運行)。我不想將 sys.exit() 寫入 Database 類,因為它被其他方法使用,我不應該在錯誤時退出。所以我很好奇在 Database 類中引發例外的最 Pythonic 方式,并在其他模塊中使用 try except 捕獲該例外。我知道我可以使用 raise 來傳遞例外,但我不確定在 try - except 塊中使用它是否有意義。
uj5u.com熱心網友回復:
在一個except塊中,raise沒有引數的陳述句將簡單地重新引發捕獲的例外,以便呼叫者可以捕獲和處理它。
except Exception as e:
logging.exception(f"Bulk insert failed: {e}")
raise
在這種情況下,再加注很常見。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/441593.html
上一篇:創建由子類初始化的最終欄位
下一篇:將相同的關系轉移到核心
