Как написать пользовательские исключения в C #? - PullRequest
5 голосов
/ 04 октября 2010

привет, может кто-нибудь сказать мне, как написать пользовательские исключения в C #? Как у нас в Java, мы можем написать в C #?

Ответы [ 2 ]

16 голосов
/ 04 октября 2010

Вы хотите наследовать от System.Exception и предпочтительно предоставить (как минимум) те же самые открытые конструкторы и передать параметры базовым конструкторам. Добавьте соответствующие свойства и / или методы, которые вы считаете подходящими для ваших конкретных потребностей.

public class MyException : System.Exception
{
     public MyException() : base() { }
     public MyException(string message) : base(message) { }
     public MyException(string message, Exception innerException) : base(message, innerException) { }
} 
11 голосов
/ 04 октября 2010

Практически то же самое, что и в Java - вы расширяете класс Exception.

В самой простой форме.

public class CustomException : System.Exception
{
  public CustomException()
  {
  }

  public CustomException(string message)
    : base(message)
  {
  }

  public CustomException(string message, System.Exception innerException)
    : base(message, innerException)
  {
  }
}

К этому затем добавьте данные, которые вы хотите захватить, используя поля или свойства.

Из интереса, прежде чем ответить на этот вопрос, я проверил Microsoft Design Guildlines на пользовательские исключения. Разработка пользовательских исключений (MSDN)

  1. Избегайте глубоких иерархий пространства имен.
  2. Если возможно, извлекайте из одного предоставленного общего базового исключения, то есть ArgumentException. ОДНАКО Не выводите из ApplicationException.Это не вредно, это бессмысленно. MSDN Blog Post на ApplicationException .
  3. Используйте суффикс «Exception».
  4. Сделайте исключения сериализуемыми с помощью интерфейса ISerializable.Очевидно, что исключение должно быть сериализуемым, чтобы правильно работать в домене приложения и удаленных границах.
  5. Храните конфиденциальную информацию о безопасности в частном состоянии исключения, добавьте атрибут SecurityPermission, чтобы гарантировать, что информация может получить только доверенный код.

I весьма рекомендуем прочитать Руководство по проектированию в MSDN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...