Solidity
在 Solidity 中處理錯誤是否有很好的解決模式和實踐?
本著Solidity是否有很好解決且簡單的儲存模式的精神?…
是否有已知的、久經考驗的實踐來處理大型 Solidity 程式碼庫中的錯誤?
在軟體工程中,錯誤名稱、程式碼和描述的清晰集合是很常見的,通常通過列舉來實現。我見過的唯一一個堅持這種嚴格的錯誤處理的項目是Compound,但肯定還有更多。Compound 的程式碼庫很大,並且與形式驗證腳本等其他技巧交織在一起,因此嚴格來說,它們的程式碼庫並不是回答這個問題時要參考的最佳實現。
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.4; error Unauthorized(); contract VendingMachine { address payable owner = payable(msg.sender); function withdraw() public { if (msg.sender != owner) { revert Unauthorized(); } owner.transfer(address(this).balance); } // ... }
注意第 4 行新的閃亮
error
語句。這是 Solidity 的遊戲規則改變者 - 比恢復原因字元串更易於使用、更高效、更優雅。