Получить уникальный код ошибки из любого типа исключения - PullRequest
1 голос
/ 24 января 2020

В моем приложении есть код, который использует системные библиотеки, которые могут выдавать CryptographicException.

В моем случае эти исключения могут возникать, когда

  • password для сертификата ssl искажено
  • password для сертификата ssl в виде простого текста

но это не должно иметь значения, поскольку мой вопрос довольно общий.

Так что для первого случая выбрасывается исключение

System.Security.Cryptography.CryptographicException: Padding is invalid and cannot be removed.

И для второго случая исключение thronw:

System.Security.Cryptography.CryptographicException: The input data is not a complete block.

Итак, я хочу записать эту ошибку в журнал событий Windows, и я хочу использовать разные идентификаторы событий в зависимости от ошибки.

Так, например, первая выдаваемая ошибка должна регистрироваться с идентификатором события 1, а вторая с идентификатором события 2.

Кроме того, я не хочу используйте Exception.Message для входа в журнал событий, поскольку ошибки не показывают, что он основан на пароле. Я, как разработчик, конечно, знаю, откуда он, но когда системный администратор проверяет журналы, он не имеет ни малейшего представления, что это значит. Это может означать что угодно.

Однако я посмотрел на исключения, и кроме трассировки сообщения / стека нет никакой разницы между этими исключениями.

Я видел, что есть HResult атрибут, который идентифицирует исключение, однако, когда я использую e.HResult.ToString("x"), в обоих случаях это 80131501 (входные данные не являются полным блоком, а заполнение недействительным)

Так что я не хочу использовать строку Сравнение, чтобы увидеть, какой идентификатор события генерировать и какое сообщение использовать. Есть ли какие-либо другие, кроме строки сообщения, чтобы определить, какое именно сообщение было выдано?

Из других языков я знаю, что исключения часто имеют атрибут ErrorCode, который уникален для исключения И сообщения.

Есть ли что-то похожее в C# или как бы я идентифицировал два разных сообщения об исключениях из одного и того же класса исключений?

...