假设我有一个输入字符串,我需要将其格式化为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 将在两个可能的点上失败,即 index out of range onpair[]
和 format exception on float.Parse
。这两个例外都会出现并且对调用者毫无意义。
我知道我有两种解决方法(不要像 1990 年代那样使用 linq 和循环,也不要抓住异常并重新打包),但是我想知道如果我检测到异常(pair.length<2
或pair[1]
不是数字)?