这两种方式之间是否有行为上的区别:
if (s == null) // s is a string
{
throw new NullReferenceException();
}
并且:
try
{
Console.Writeline(s);
}
catch (NullReferenceException Ex)
{ // logic in here
}
如果s为空,两个都会抛出null对象的异常。第一个示例更易读,因为它准确地显示了错误发生的位置(异常位紧挨着将导致异常的行)。
我已经在各种博客上看到过很多不同技能水平的程序员使用这种编码风格,但为什么不通过检查s是否不为空来执行主逻辑,从而避免引发异常呢?这种方法有什么缺点吗?
谢谢