ฉันต้องการที่จะตรวจจับตัวแปรทั้งหมดของคลาสข้อยกเว้นทั่วไปและฉันสงสัยว่ามีวิธีที่จะทำโดยไม่มีบล็อก 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>
จะใช้ได้