它說,派生類不應該拋出任何基類未知的異常,我想找到它的工作,在基類中我拋出System.Exception和Derived我拋出ArgNullException()。 有人可以解釋爲,這是好的liskov替代原則和異常處理
class b
{
virtual public void foo()
{
try
{
if (true)
throw new System.Exception();
}
catch (Exception ex)
{
Console.WriteLine("in base");
}
}
}
class a : b
{
override public void foo()
{
try
{
if (true)
throw new ArgumentNullException();
}
catch (Exception ex)
{
Console.WriteLine("in dervied");
}
}
}
異常基類拋出應該是由超類拋出的異常的子類型。你的例子甚至不會拋出任何異常(使用catch塊)。 – aknon