我想捕获一个通用异常类的所有变体,我想知道是否有一种方法可以在没有多个catch块的情况下进行。例如说我有一个异常类:
public class MyException<T> : Exception
{
public string MyProperty { get; }
public MyException(T prop) : base(prop.ToString())
{
MyProperty = prop?.ToString();
}
}
和两个派生类:
public class MyDerivedStringException : MyException<string>
{
public MyDerivedStringException(string prop) : base(prop)
{
}
}
public class MyDerivedIntException : MyException<int>
{
public MyDerivedIntException(int prop) : base(prop)
{
}
}
有没有一种方法可以同时捕获MyDerivedStringException
和MyDerivedIntException
捕获一个捕获块。
我已经试过了:
try
{
...
}
catch(Exception e) when (e is MyDerivedStringException || e is MyDerivedIntException)
{
}
但是它不是很干净,意味着我无法使用MyProperty
。
我对问题的一般解决方案感兴趣,但是在我的情况下,通用异常是在第三方库中定义的,如下所述,该库为问题增加了一些其他约束。
Exception
,并MyException<T>
会被罚款。