Обработка ошибок в свойствах, я знаю, что это плохо, нужно исправить, хотя -- c# поле с участием error-handling поле с участием coding-style пол Связанный проблема

Error handling in properties, I know its bad, need fix though


2
vote

проблема

русский

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

У меня есть GRIDVIEW, в котором пользователю разрешено изменять ячейку 2 на любое значение (char), но если пользователь вводит что-то больше, чем Char, он заполнит ошибку, это моя лучшая ставка, чтобы просто проверить на GRIDView?

Мне кажется немного бегать в эту проблему, когда у меня есть свойства или даже методы, которые возвращают тип, я не могу вступить в обработку ошибок, не делая попыток уловки (или трипария), и если его неправильно возвращает тип но пусто.

 <код> public char WeightClass {    get       {          return Convert.ToChar(gvFighters.Rows[rowNumber].Cells[2].Value);       } }   

Редактирование: Если вы можете предоставить некоторые дополнительные показания для методов кода, которые также будут иметь плюс читать большую часть кода Complete ....

Редактировать

 <код>    public char FlightClassFromRow()             {                    char result;                 if(Char.TryParse(gvSegments.Rows[rowNumber].Cells[2].Value.ToString(),out result))                 {                     return result;                 }      //if false, return empty char? is that the best way?             }   
Английский оригинал

I know its bad practice to put error handling in properties I just want to know where I should be putting the error handling. I know that a value in a property should never change.

I have a gridview where the user is allowed to change cell 2 to any value (char) but if the user enters something larger than a char it will populate an error, is my best bet to just check on the gridview somehow?

I seem to run into this problem a bit, when I have properties or even methods that return a type, I can't get into error handling, without doing a try catch (or TryParse) and if its wrong returning the type but blank.

public char WeightClass {    get       {          return Convert.ToChar(gvFighters.Rows[rowNumber].Cells[2].Value);       } } 

EDIT: if you could provide some additional readings for code practices that would also be a plus read most of code complete....

EDIT

   public char FlightClassFromRow()             {                    char result;                 if(Char.TryParse(gvSegments.Rows[rowNumber].Cells[2].Value.ToString(),out result))                 {                     return result;                 }      //if false, return empty char? is that the best way?             } 
</div
        
     
     

Список ответов

1
 
vote
vote
Лучший ответ
 

Нет необходимости в попробовать поймать.

    .
  • Проверьте, если ваша строка и AMP; Columnnumbers меньше, чем подсчет строки / столбца
  • Используйте char.triparse

Но если свойство делает больше простого возврата, лучше использовать метод.

 

No need for a try catch.

  • Check if your row- & columnnumbers are smaller then the row/column count
  • Use Char.TryParse

But if a property is doing more than a simple return it's better to just use a method.

</div
 
 
     
     
0
 
vote

Вот реализация образца, используя упомянутое enum:

 <код>     private static WeightClass WeightClassFromRow(DataGridView gvSegments, int rowNumber)     {         return WeightClassFromChar(gvSegments.Rows[rowNumber].Cells[SegmentColumns.WeightClass].Value as string);     }      private static WeightClass WeightClassFromChar(string weightClassString)     {         if (string.IsNullOrEmpty(weightClassString))             return WeightClass.None;         switch (weightClassString[0])         {             case 'H':                 return WeightClass.Heaveyweight;             case 'L':                 return WeightClass.Lightweight;             default:                 return WeightClass.None;         }     }   
 

Here is a sample implementation using the enum that was mentioned:

    private static WeightClass WeightClassFromRow(DataGridView gvSegments, int rowNumber)     {         return WeightClassFromChar(gvSegments.Rows[rowNumber].Cells[SegmentColumns.WeightClass].Value as string);     }      private static WeightClass WeightClassFromChar(string weightClassString)     {         if (string.IsNullOrEmpty(weightClassString))             return WeightClass.None;         switch (weightClassString[0])         {             case 'H':                 return WeightClass.Heaveyweight;             case 'L':                 return WeightClass.Lightweight;             default:                 return WeightClass.None;         }     } 
</div
 
 
   
   

Связанный проблема

5  Можем ли мы использовать ответ .Flush () вместо ответа. Денды ()  ( Can we use response flush instead of response end ) 
<Код> Response.End() генерирует <код> ThreadAbortException . Использование <код> HttpContext.Current.ApplicationInstance.CompleteRequest вместо этого не р...

-4  Будет вернуться внутрь памяти утечки для петли?  ( Will a return inside of a for loop leak memory ) 
в основном все, что мне нужно знать, является ли возвращение внутри цикла для цикла в C #. <код> for (int i = 0; i <= 20; i++ ) { if(i == 10) re...

1  Разница между несколькими наследованиями и интерфейсами в C #  ( Difference between multiple inheritance and interfaces in c sharp ) 
делает C # действительно поддерживать многократное наследование. Люди говорят, что он поддерживает многократное наследование в виде интерфейсов? Но я не думаю...

0  Как нарисовать в автономном режиме круг 1500 метров в диапазоне Geocoordinate в Windows Phone 8  ( How to draw offline circle of 1500 meters range over the geocoordinate in window ) 
Я хочу нарисовать автономный круг над геокоординаном в Windows Phone Этот круг составляет 1500 метров, и он ищет цель в этом диапазоне это мой образ, где у...

0  Присоединиться к запросу с LINQ  ( Join query with linq ) 
Я пытаюсь здесь сделать несколько левых присоединиться к запросу LINQ, но я бы сказал, что понятия не имею, как материализовать эту идею. в основном вот 3 с...

1  Как я могу прочитать все предметы питания?  ( How do i read all feed items ) 
Я хочу прочитать все элементы подачи в C #. Решения, которые я обнаружил, только для новейших элементов, таких как только последние 10 дней. У кого-нибудь е...

0  Ошибка структуры объекта: ошибка загрузки указанного ресурса метаданных  ( Entity framework error error loading specified metadata resource ) 
Я знаю, что это известная проблема, но решение для моего случая не в других вопросах, я думаю. У меня есть проект в C #. В этом проекте у меня есть мой EDMX...

0  Streaminsight и долгосрочные запросы  ( Streaminsight and long running queries ) 
У меня есть приложение, построенное на вершине Streaminsight 1.2, который имеет несколько постоянных запросов, выполняющих некоторые расчеты в операторах опре...

0  Как бы я пошел на рисование в программе краски с чувствительностью давления?  ( How would i go about drawing in a paint program with pressure sensitivity ) 
Я пишу программу краски в родах, используя C # .NET / WinForms и чувствительность к давлению является обязательным. У меня все настроено и получаю информацию ...

3  Как мне расположить эллипс на сетке Silverlight?  ( How do i position an ellipse on a silverlight grid ) 
Я создаю приложение Silverlight, которое позволит вам нажать в два места на экране и нарисовать эллипс, основной ось которого начинается и заканчивается в мес...

2  Обращайтесь с событиями для динамического (время выполнения) - vb.net  ( Handle events for dynamic run time controls vb net ) 
У меня есть элемент управления WebBrowser, который создается и добавляется в форму во время выполнения. Как подключить этот элемент управления подпрограммой...

4  Создайте VCARD, который можно скачать на Android с помощью ASP.NET  ( Generate vcard that can be downloaded on android using asp net ) 
Я пробую довольно некоторое время, чтобы сгенерировать VCARD, используя ASP.NET (C #), которые можно загрузить на устройство Android. Процесс генерации карт...

1  WIX Набор инструментов Build не удается после обновления от .NET 4.0 до 4.6.1: не может загрузить MSBuild Wrapper?  ( Wix toolset build fails after upgrading from net 4 0 to 4 6 1 cannot load msbu ) 
Так после обновления всего проекта до 4.6.1 Я получаю эту ошибку, выброшенную нагревом, когда я его создаю: <код> Failed to load MSBuild wrapper object: Cou...

-2  Гольф HCP Calculator  ( Golf hcp calculator ) 
Я работаю над программой в ASP.NET MVC, где моя цель - сделать показатель для гольфа. в Golf у каждого игрока есть гандикап, который дает им ряд дополнитель...

1  Xero C # «Текущий токенопозиторий не имеет токена текущего запроса»  ( Xero c sharp the current tokenrepository doesnt have a current request token ) 
удалось подключиться к Xero API и получить токен запроса. Однако после перезапуска проекта (для отладки) он в основном дает следующую ошибку при проложении то...

Связанный проблема

5  Можем ли мы использовать ответ .Flush () вместо ответа. Денды () 
-4  Будет вернуться внутрь памяти утечки для петли? 
1  Разница между несколькими наследованиями и интерфейсами в C # 
0  Как нарисовать в автономном режиме круг 1500 метров в диапазоне Geocoordinate в Windows Phone 8 
0  Присоединиться к запросу с LINQ 
1  Как я могу прочитать все предметы питания? 
0  Ошибка структуры объекта: ошибка загрузки указанного ресурса метаданных 
0  Streaminsight и долгосрочные запросы 
0  Как бы я пошел на рисование в программе краски с чувствительностью давления? 
3  Как мне расположить эллипс на сетке Silverlight? 
2  Обращайтесь с событиями для динамического (время выполнения) - vb.net 
4  Создайте VCARD, который можно скачать на Android с помощью ASP.NET 
1  WIX Набор инструментов Build не удается после обновления от .NET 4.0 до 4.6.1: не может загрузить MSBuild Wrapper? 
-2  Гольф HCP Calculator 
1  Xero C # «Текущий токенопозиторий не имеет токена текущего запроса»