エントリのリストにフォーマットする必要がある入力文字列があるとしましょうKeyValuePair<string,float>
。入力文字列の形式は次のとおりです。
key:value;key:value;...
それを行うためのこのLinqコードがあるとしましょう
var orr = from pco in (overrrides ?? string.Empty).Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries)
let pair = pco.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries)
select new KeyValuePair<string, float>(pair[0], float.Parse(pair[1]));
ここで、入力文字列が適切にフォーマットされていない場合、linq は、範囲外のインデックスpair[]
とフォーマット例外の 2 つの可能性のあるポイントで失敗しfloat.Parse
ます。これらの例外は両方ともボブルアップし、呼び出し元にはまったく意味がありません。
私は2つの回避策があることを知っています(1990年代のようにlinqとループを使用しないか、上記の例外を取得して再パッケージ化しないでください)、異常を検出した場合(pair.length<2
またはpair[1]
数ではない)?