私はF#でtry-withを理解しようとしています。私が理解しているように、tryの戻り値の型はwithの戻り値の型と同じでなければなりません。F#try-withとreraise()は有効な型を返します。どうして?
しかし、私はこのような何かをするときということ、それがある理由:
let safeIndexTry (anArray : array<'a>) (i : int) =
try
Array. item i anArray
with
| :? System.IndexOutOfRangeException as ex -> printfn "%s" ex.Message
reraise()
その後、私はそれを把握することができますよう。 reraise()は戻り値を有効な型に変換します。この場合はintです。しかし、それはなぜですか?それはすべてのタイプのためにそれを行うリレイズですか?
一般的に私は2つが同じ戻り値の型を持たなければならないということが少し問題です。私はいつもあなたはいくつかの値を計算したいと思うし、文字列メッセージをスローする例外をキャッチすることができない場合。いくつか私に指導を与えることができますか?
あなたは、このどれも、いくつかの例外処理を説明することはできませんか?私は本当にこれを理解したいと思います。 – Nulle
私は 'Option'を使用した例を追加しました –
ありがとう! – Nulle