Go不提供斷言。它們無疑是很方便的,但是我們的經驗是程序員將它們用作拐杖,以避免考慮適當的錯誤處理和報告。然而,它具有打印和println哪些呢緊急打印,在打印后中止執行緊急打印,在打印后中止執行那和斷言不是一回事嗎?他們為什么會聲稱以上內容卻感到恐慌?我可以看到它導致了同樣的問題,但是在它的末尾添加了一個錯誤消息,很容易被濫用。我想念什么嗎?
3 回答

慕俠2389804
TA貢獻1719條經驗 獲得超6個贊
除了顯而易見的是,它panic
并不會檢查任何東西assert
,在Go中,即使發生恐慌,您也可以使用機制進行錯誤處理。
如果程序包認為發生了某些事情,則無法從它中驚慌失措。
但是,包用戶,調用方(父級)可能要檢查或記錄緊急情況,然后繼續進行緊急情況,或者捕獲它以正確處理案件(例如,重試或使用其他程序包/功能)。
同樣,斷言中止不會調用析構函數或任何東西。盡管Go中的恐慌仍然會調用您defer
將要執行的函數,所以一切都已清理干凈。
因此,正如您所看到的,與斷言相反,緊急情況將允許執行各種清理任務。那就是你給的報價所指向的。
- 3 回答
- 0 關注
- 268 瀏覽
添加回答
舉報
0/150
提交
取消