Trong mã của tôi, tôi đang gặp phải tình huống trong đó System.Reflection.TargetInvocationException
bị ném. Trong một trường hợp cụ thể, tôi biết cách tôi muốn xử lý ngoại lệ gốc, nhưng tôi muốn ném tất cả các ngoại lệ khác. Tôi có thể nghĩ ra hai cách để làm điều này, nhưng tôi không chắc cái nào tốt hơn.Kiểm tra loại ngoại lệ bên trong
1.
try
{
//code
}
catch (System.Reflection.TargetInvocationException ex)
{
if (typeof(ex.InnerException) == typeof(SpecificException))
{
//fix
}
else
{
throw ex.Innerexception;
}
}
2.
try
{
//code
}
catch (System.Reflection.TargetInvocationException ex)
{
try
{
throw ex.InnerException;
}
catch (SpecificException exSpecific)
{
//fix
}
}
Tôi biết rằng ném ngoại lệ nói chung là chậm, vì vậy tôi cảm thấy phương pháp đầu tiên có thể sẽ nhanh hơn. Ngoài ra, có cách nào tốt hơn để làm điều này mà tôi đã không nghĩ đến?
2 là hấp dẫn, IMHO 1 là dễ đọc hơn và có lẽ tốt hơn từ một quan điểm thực hiện xem. – Gabber
Câu hỏi: cuộc gọi đang ném 'TargetInvocationException' là gì? Đó là mã của bạn, hoặc bên thứ ba? –
Mã được tạo ra đang đọc từ db. – geekchic