2009-12-24 64 views
5

當我在Erlang編程時,我應該通過模式匹配驗證函數調用中的所有返回值是否成功,即使我不打算使用返回值?到目前爲止,我所見過的大多數Erlang API都不會在錯誤時拋出異常(但返回像{error,Error}之類的東西),所以我必須驗證返回值yes?任何例外,我不需要擔心這一點嗎?我應該模式匹配每個返回值嗎?

回答

11

這是很好的編程風格,當出現問題時儘可能早地崩潰。之後執行的任何操作都將在系統處於未知狀態下完成。

除非您打算處理錯誤值並對其執行某些操作,否則您會爲成功案例編寫代碼。正如在下面的小悲傷的循環:

life() -> 
    ok = work(), 
    ok = rest(), 
    life(). 
+0

基督徒說這一切... + 1。 – jldupont 2009-12-24 01:33:11

+0

是的,這是我的想法。問題是我使用的第三方API之一不能很好地返回成功。保存文檔後,它會返回保存的文檔本身。我找回SomeComplexDoc而不是{ok,SomeComplexDoc}。 – 2009-12-24 02:42:34

+3

@Jeremy,你可以保存文檔,然後在下一行中匹配它。 'Doc = my_api_call()','ok = is_valid_doc(Doc)'。 – Zed 2009-12-24 08:54:33