我是否必须尝试捕获单个函数,或者我可以将它包裹在一个更大的块周围吗?
Do I have to try catch the individual function or can i wrap it around a larger block?
.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 块会在异常发生时立即抛出异常。这样我就可以把整个东西包起来了。
我想我解决了,我错了吗and/or有什么我没有考虑到的吗?
我会处理 null 情况而不是 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
.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 块会在异常发生时立即抛出异常。这样我就可以把整个东西包起来了。
我想我解决了,我错了吗and/or有什么我没有考虑到的吗?
我会处理 null 情况而不是 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