私はしばしばErlang関数がok
、または{ok, <some value>}
、または{error, <some problem>}
を返します。いつErlang関数が正常に戻りますか?
私の関数が整数Nを返すと仮定します。私の関数はただNを返しますか?{ok, N}
?
または、私の機能には電話io:function("Yada yada")
が含まれているとします。それはok
を返しますか、まったく何も返しませんか?
または、私がレコードや楽しいことをしているとします。 {ok, R}
または(ok, F}
を返す必要がありますか?
おかげで、
LRP
私が作っておきたいことは、ユーザがエラーを処理できることが意味を持つならば、 '{error、Reason}'だけを返すべきことです。回復不可能なエラーの場合は、例外としてスローされる方がよい。 –
'リスト:nth/1'は、そのような良い例ではありません。なぜなら、それは(ユーザーが処理できるはずの)失敗のケースを持っているからです。 –
これは有効な例です。 'lists:nth/2'は無効な入力が与えられた場合にのみ失敗します。 'math:cos(foo)'も同じように失敗します。どちらも回復不可能なため、例外がスローされます。私がそれを記述したパターンは、回復可能なエラーだけを参照しています(Adamのコメントを参照)。 –