我是否必须尝试捕获单个功能,还是可以将其包装在较大的块上?

时间:2018-12-07 12:02:31

标签: c# exception-handling

.Replace()导致异常,因为authorElement.QuerySelector(...)。InnerTextClean返回null。这非常罕见(1 / 100,000),所以我宁愿使用try catch而不是检查null。

author.salescount = Convert.ToInt32(authorElement.QuerySelector("div.sale-info.is-hidden-phone > em").InnerTextClean.Replace(",", ""));

所以我的问题是,我是否必须将其分解为多行,并且仅尝试捕获失败的单个功能?

.ToInt32()显然不能接受null,但是我认为try catch块将在异常发生时立即抛出该异常。这样我就可以包装整个东西。

我想我已经解决了,是我做错了,和/或有没有我未考虑的东西?

1 个答案:

答案 0 :(得分:0)

我将处理空值而不是try / catch

string inner = authorElement.QuerySelector("div.sale-info.is-hidden-phone > em")?.InnerTextClean?.Replace(",", "");
int temp;
author.salescount = int.TryParse(inner, out temp) ? temp : -1; // -1 in case of null