Есть ли в FCL уже исключение, означающее сбой выполнения метода?

StackOverflow https://stackoverflow.com/questions/618661

  •  03-07-2019
  •  | 
  •  

Вопрос

У меня есть собственное исключение, которое выбрасывает сбой выполнения метода (p/invoke в моем случае).

public PInvokeException(string methodName)
: base(String.Format(CultureInfo.CurrentCulture,
"An error occured while external method '{0}' call",
methodName)) { }

Но я хочу заменить его на уже существующий.Есть ли в FCL что-то подобное?

Это было полезно?

Решение

Собирается ли ваш абонент выполнять различные действия в зависимости от того, генерируете ли вы исключение PInvokeException или InvalidOperationException? Если это так, то создайте пользовательское исключение PInvokeException. В противном случае используйте InvalidOperationException и очистите сообщение об ошибке.

См. Как создавать иерархии исключений .

Другие советы

В BCL нет ничего, предназначенного для вызовов PInvoke.Ближайшие из существующих — Marshal.GetExceptionForHR и Marshal.GetHRForLastWin32Error.Вы можете использовать комбинацию этих двух функций для создания соответствующего исключения при сбое вызова PInvoke.

Бывший:

throw Marshal.GetExceptionForHR(Marshal.GetHRForLastWin32Error());

Как насчет System.Runtime.InteropServices.ExternalException ?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top