Подтвердить что ты не робот

Какой лучший способ повысить исключение в С#?

Я традиционно развертываю набор веб-страниц, которые позволяют вручную проверять функциональность основного приложения. Одним из примеров является LoggerTest.aspx, который генерирует и регистрирует тестовое исключение. Я всегда хотел поднять исключение DivideByZeroException, используя подход, похожий на следующий фрагмент кода:

try
{
   int zero = 0;
   int result = 100 / zero;
}
catch (DivideByZeroException ex)
{
   LogHelper.Error("TEST EXCEPTION", ex);
}

Код работает отлично, но я чувствую, что должно быть более элегантное решение. Есть ли лучший способ повысить исключение в С#?

4b9b3361

Ответ 1

try
{
  throw new DivideByZeroException();
}
catch (DivideByZeroException ex)
{
  LogHelper.Error("TEST EXCEPTION", ex);
}

Ответ 2

Короткий ответ:

throw new Exception("Test Exception");

Вам понадобится

using System;

Ответ 3

Создать настраиваемое исключение для целей тестирования? Затем вы можете добавить любые настраиваемые свойства, которые вы хотите, чтобы исключение нести с собой на этом пути через процесс обработки/регистрации исключений...

 [Serializable]
 public class TestException: ApplicationException
 {
     public TestException(string Message, 
                  Exception innerException): base(Message,innerException) {}
     public TestException(string Message) : base(Message) {}
     public TestException() {}

     #region Serializeable Code
     public TestException(SerializationInfo info, 
           StreamingContext context): base(info, context) { }
     #endregion Serializeable Code
 }

в вашем классе

 try
 {  
      throw new TestException();
 }
 catch( TestException eX)
 {  
    LogHelper.Error("TEST EXCEPTION", eX);
 }

Ответ 4

throw exceptionhere;

Не правда ли?

Пример, который я нашел, был

        if (args.Length == 0)
        {
            throw new ArgumentException("A start-up parameter is required.");
        }

Ответ 5

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

Если вы не видите разницы, подумайте: действительно ли вы уверены, что хотите проверить NullRefernceException и когда для ArgumentNullException?

Ответ 6

Спасибо за отзывы. Я отметил ответ GalacticCowboy как правильный, поскольку это, очевидно, правильный ответ, основанный на том, как формулируется вопрос.

Для тех, кто думает "на этот вопрос должно быть больше", вы правы. В сущности, я искал лучший способ поднять/вызывать/моделировать исключение. Как заявил Джеймс Карран, это появление исключения, а не бросание исключения, за которым я следую. Принуждение DivideByZeroException является моей стратегией по умолчанию, хотя я думал, что может быть другой способ или, возможно, даже лучшее исключение для силы.

Скорее всего нет никакой разницы между броском и "поднятием" исключения. Похоже, что большинство ответов такого мнения.

Еще раз спасибо за отзыв и извините, если вопрос был неопределенным.

Ответ 7

throw new DivideByZeroException("some message");?

Или я что-то не хватает?

Ответ 8

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

LogHelper.Error("TEST EXCEPTION", new Exception("This is a test exception"));

Ответ 9

        try
        {
            string a="asd";
            int s = Convert.ToInt32(a);
        }
        catch (Exception ex)
        {

            Response.Write(ex.Message);
        }

Он вернет исключение "Строка ввода не была в правильном формате".

Ответ 10

В целях тестирования вы, вероятно, захотите создать определенный класс (возможно, TestFailedException?) и выбросить его, а не захватить другой тип исключения.