Хорошая практика обработки ошибок

Добавляя еще два пункта в ответ @abcdaire,

  1. mnist имеет размер изображения (28,28), вы неправильно его присвоили.
  2. Binarization является еще одним методом, который может быть использован. Это также делает сеть, чтобы учиться быстро. Это можно сделать так.

`

imges_dataset = imges_dataset/255.0
imges_dataset = np.where(imges_dataset>0.5,1,0)
10
задан Alekc 3 April 2009 в 08:05
поделиться

7 ответов

Как с любым проектом .NET я нахожу, что лучший способ состоит в том, чтобы только поймать определенные ошибочные типы, если они - май для случая на данной странице.

Например, Вы могли поймать Исключения Формата для пользователи, данные вход (просто упаковывают сбои проверки JavaScript, и у Вас нет использования tryparse), но всегда оставляйте ловлю высокоуровневого Исключения к глобальному обработчику ошибок.

     try
        {
            //Code that could error here
        }
        catch (FormatException ex)
        {
            //Code to tell user of their error
            //all other errors will be handled 
            //by the global error handler
        }

Можно использовать открытый исходный код elmah (Модули регистрации ошибок и Обработчики), чтобы ASP.NET сделал этот верхний уровень / глобальный с обнаружением ошибки для Вас, если Вы хотите.

Используя elmah это может создать журнал ошибок, который видим хотя простое для конфигурирования веб-интерфейса. Можно также отфильтровать различные типы ошибок и иметь пользовательские собственные ошибочные страницы для различных ошибочных типов.

9
ответ дан 4 December 2019 в 00:27
поделиться

Одна практика, которую я нахожу, чтобы быть особенно полезным, должна создать универсальную ошибочную страницу и затем установить Ваш defaultRedirect на customErrors узле web.config к той ошибочной странице.

Затем установите свой global.asax для входа всех необработанных исключений и затем поместите их (необработанные исключения) в статическом свойстве на некотором классе (у меня есть класс под названием ErrorUtil со статическим свойством LastError). Ваша ошибочная страница может затем посмотреть на это свойство для определения, что отобразиться пользователю.

Больше деталей здесь: http://www.codeproject.com/KB/aspnet/JcGlobalErrorHandling.aspx

3
ответ дан 4 December 2019 в 00:27
поделиться

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

Один такой пример для исключений (я не вспоминаю, является ли это исходным к документу или если мы добавили его к документу): Никогда не делайте “исключение выгоды и ничего не делайте”. При сокрытии исключения Вы никогда не будете знать, произошло ли исключение. Необходимо всегда стараться избегать исключений путем проверки всех состояний ошибки программно.

Пример того, какой не сделать:

try
{
   ...
}
catch{}

Очень непослушный, если у Вас нет серьезного основания для него.

0
ответ дан 4 December 2019 в 00:27
поделиться

Необходимо удостовериться, что можно зафиксировать большинство ошибок, которые сгенерированы приложением и отображают дружественное сообщение пользователям. Но конечно Вы не можете зафиксировать все ошибки, для которых можно использовать web.config и defaultRedirect другим пользователем. Другой очень удобный инструмент для входа ошибок является ELMAH. ELMAH зарегистрирует все ошибки, сгенерированные Вашим приложением, и покажет его Вам очень читаемым способом. Включение ELMAH в Вашем приложении так же просто как добавляющий немного строк кода в web.config файле и присоединяющий блок. Необходимо определенно дать ELMAH попытку, он буквально сохранит Вас часы и часы боли.

http://code.google.com/p/elmah/

0
ответ дан 4 December 2019 в 00:27
поделиться

Это - не всегда хорошая идея перенаправить пользователя к странице стандартной погрешности. Если пользователь работает над формой, они не могут хотеть быть перенаправленными далеко от формы, они продолжают работать. Я поместил весь код, который мог вызвать исключение в блоке попытки/выгоды, и в блоке выгоды я выложил аварийное сообщение, предупреждающее пользователя, что ошибка произошла, а также регистрирует исключение в базе данных включая вход формы, строку запроса, и т.д. Я разрабатываю внутренний сайт, однако, таким образом, большинство пользователей просто звонит мне, если у них есть проблема. Для общедоступного сайта можно хотеть использовать что-то как elmah.

0
ответ дан 4 December 2019 в 00:27
поделиться
  1. Код оборонительно в каждой странице для исключений, которые Вы ожидаете, мог произойти и иметь дело с ними соответственно, таким образом, не разрушить пользователя каждый раз, когда исключение происходит.

  2. Зарегистрируйте все исключения со ссылкой.

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

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

0
ответ дан 4 December 2019 в 00:27
поделиться
public string BookLesson(Customer_Info oCustomerInfo, CustLessonBook_Info oCustLessonBookInfo)
    {
        string authenticationID = string.Empty;
        int customerID = 0;
        string message = string.Empty;
        DA_Customer oDACustomer = new DA_Customer();

        using (TransactionScope scope = new TransactionScope())
        {
            if (oDACustomer.ValidateCustomerLoginName(oCustomerInfo.CustId, oCustomerInfo.CustLoginName) == "Y")
            {
                // if a new student
                if (oCustomerInfo.CustId == 0)
                {
                    oCustomerInfo.CustPassword = General.GeneratePassword(6, 8);
                    oCustomerInfo.CustPassword = new DA_InternalUser().GetPassword(oCustomerInfo.CustPassword, false);
                    authenticationID = oDACustomer.Register(oCustomerInfo, ref customerID);
                    oCustLessonBookInfo.CustId = customerID;
                }
                else // if existing student
                {
                    oCustomerInfo.UpdatedByCustomer = "Y";
                    authenticationID = oDACustomer.CustomerUpdateProfile(oCustomerInfo);
                }
                message = authenticationID;
                // insert lesson booking details
                new DA_Lesson().BookLesson(oCustLessonBookInfo);
            }

            else
            {
                message = "login exists";
            }
            scope.Complete();
            return message;
        }

    }
0
ответ дан 4 December 2019 в 00:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: