首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

函數執行到一半出錯:已處理數據該丟棄還是返回?

     編輯:程式設計綜合問答

原則:視業務語義而定,核心是「數據一致性」

  • 內存分配失敗:如 malloc 返回 NULL,已分配塊必須 free,不可殘留(否則洩漏)。調用者收到錯誤碼,知曉操作完全未生效。
  • 數據庫事務:屬於同一事務的多步操作,中途出錯必須 回滾,確保原子性。
  • 流式處理/日誌寫入:若前段數據已持久化且不可逆,需記錄「部分成功」狀態,供上層決策(重試/補償/人工介入)。
  • 純計算函數:輸出參數僅在成功時寫入,出錯時保持不變,調用者不使用輸出值。

設計建議

  1. 函數文檔明確錯誤時的副作用承諾(無副作用 / 部分副作用可回滾 / 部分副作用不可逆)。
  2. 優先採用 「先驗證、後執行」:參數校驗、資源預分配、權限檢查全部通過再進入核心邏輯,減少中途失敗概率。
  3. 關鍵操作採用 冪等設計,便於重試。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved