Я неоднократно оказывался в ситуациях, когда я хочу перехватить исключение (в .net), но может быть несколько исключений с разными сообщениями, которые я хочу обрабатывать по-разному.
Когда я просматриваю исключение в отладчике, я обычно не могу найти какой-либо фрагмент метаданных, который показывает мне уникальное число, представляющее это конкретное исключение, поэтому я в итоге пишу сравнения строк. Класс исключений тот же.
Это утомительно и кажется неправильным. Я упускаю какой-то хороший способ уникальной идентификации исключений без сравнения строк? Или мне просто довелось работать с некоторыми плохими библиотеками, которые не генерируют исключения с хорошими метаданными? (Примеры до сих пор включали ADODB и OpenNETCF).
псевдокод, объясняющий, что я описываю:
Try
...
Catch myexception as System.Runtime.InteropServices.COMException
switch(myexception.message){
case "oneexceptionmessage":
handleOneException()
case "twoexceptionmessage":
handleTwoException()
}
End Try
End Try
- Типы исключений разные
- Внутренние исключения равны нулю
- HR-результаты могут отличаться, но обычно недоступны в качестве защищенных свойств