2014-12-24 2 views
-1

Ниже Пример кода, который объясняет мой вопрос:Возвращаясь Exception в булевом методе C#

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      try 
      { 
       Program.Sample(); 
       Console.ReadLine(); 
      } 
      catch (Exception) 
      { 
       Console.WriteLine("InvalidOperation Exception"); 
      } 
     } 

     static bool Sample() 
     { 
      int a = 1; int b = 2; 
      if (a == b) //Some Condition checking 
      { 
       return true; 
      } 
      else 
      { //Is this Proper returning Exception In Boolean method instead of False 
       throw new InvalidOperationException(); 
      } 
     } 
    } 
} 

Я ловя это исключение в клиентских приложениях и Отображение сообщения Я хотел бы знать, является ли правильным способом делать это или нет?

+0

Да, это как сделать работу с Исключениями, так как вы будете учиться на любом курсе программирования C#. –

+2

Я не уверен, что у нас достаточно информации, чтобы помочь вам здесь. Бросок и обработка ошибок (с помощью Try/Catch), безусловно, является ОК. Однако, при каких обстоятельствах ваш метод «Образец» возвращает false? – olitee

+1

Это, безусловно, показывает * как * использовать исключение, но я бы сказал, что это не хороший пример *, когда * использовать его. – ClickRick

ответ

0

Не используйте исключения для нормального потока управления, если это возможно. За исключением сбоев системы и операций с потенциальными условиями гонки, разработчики рамок должны разработать API-интерфейсы, чтобы пользователи могли писать код, который не генерирует исключений. Например, вы можете предоставить возможность проверить предварительные условия перед вызовом члена, чтобы пользователи могли писать код, который не генерирует исключения.

Рассмотрите возможность завершения процесса путем вызова System.Environment.FailFast (System.String) (функция .NET Framework версии 2.0) вместо исключения исключения, если ваш код встречает ситуацию, когда небезопасно продолжать выполнение.

4

Исключения должны быть выброшены при возникновении исключительных обстоятельств или возникнет ошибка использования, т. Е. Нулевой параметр. В вашем случае было бы лучше просто вернуть false.

+1

Я не согласен с 'return false'. Это будет зависеть от функциональности метода и общей архитектуры. Но я не могу поддерживать общий 'return false'. –

+1

@Nico Предоставленный код не показывает достаточного обоснования для исключения исключения, учитывая, что 'return false' делает работу отлично (лучше, на самом деле) и гораздо более четко. – ClickRick

+1

@NicoSchertler: Даже с данным кодом? Если бы он возвращал false где-то, я мог бы согласиться, но метод, который никогда не возвращает false, действительно должен думать о том, что он делает. Мне кажется, что исключение вместо того, чтобы возвращать false (как это предлагает комментарий), исключает исключение. – Chris

Смежные вопросы