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

В чем разница между ошибкой и исключением в .NET?

Не могли бы вы объяснить мне, какая разница между ошибкой и исключением?

4b9b3361

Ответ 1

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

Ошибки, с другой стороны, могут быть исключительными или нет.

Существует несколько типов ошибок:

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

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

  • Предотвращение ввода плохих данных (проверка на лицевой стороне)
  • Предотвращение сохранения плохих данных (проверка подлинности)

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

Ответ 2

Исключением является объект типа, относящийся к классу System.Exception. Он используется в инструкции throw для передачи управления в предложение catch в блоке try где-то дальше вверх по стеку вызовов.

Ошибка - это просто код или сообщение, которое вы должны интерпретировать. Проблема с кодами ошибок заключается в том, что вы можете игнорировать их:

MethodThatReturnsAnError();
SomeCodeThatShouldNotExecuteOnError();

Этот вызов просто игнорирует код ошибки, если он возвращается. Однако:

MethodThatThrowsAnException();
SomeCodeThatShouldNotExecuteOnError();

Это нельзя игнорировать и передать управление стеком, минуя "SomeCodeThatShouldNotExecuteOnError();".

Ответ 3

Исключения, которые вы должны написать, чтобы игнорировать код. Коды ошибок вы должны писать код, чтобы не игнорировать.

Ответ 4

Обычно я классифицирую их как:

Ошибка - это известный рабочий процесс внутри приложения. Например: Имя пользователя, не предоставленное во время аутентификации, является ошибкой.
Приложение может справиться с этой ситуацией и сможет показывать дружественные сообщения пользователю для запроса правильного ввода и/или обработки данных в другом.

Исключение - обычно бросается при выходе из вашей системы и/или что-то неожиданное происходит в приложении. Например: открытие дескриптора файла может вызвать исключение из-за недостаточных прав или файла, который не существует.
Обычно в этом случае приложение может поймать это исключение и/или написать общий обработчик для обработки всех исключений в системе.

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

Все остальные "unknown-unknows" могут затем попадать в категорию "Исключения".

НТН.

Ответ 5

Если обработчик исключений для данного исключения не присутствует, программа прекращает выполнение с сообщением об ошибке.

Необработанные исключения - это ошибки. Таким образом, все ошибки являются исключениями, но обратное неверно. Метод исключений Handlings обрабатывает Exception/Unexpected Situations (Errors), в то время как ошибки - это ситуации, которые, как мы ожидали, так явно не появлялись, мы должны заботиться о них, перенаправляя пользователей (пользователей) на некоторую статическую HTML-страницу и захватывая ее в Журналы и придумайте решение для ошибки.

Ошибки могут возникать на 2 уровнях

  • Уровень страницы (используйте атрибут ErrorPage на странице Директива)
  • Уровень приложения (необходимо обрабатывать в web.config)

Компиляция CustomError... CustomError   ошибка.... ошибка компиляция  Примечание. Обработка ошибок уровня страницы переопределяет обработку ошибок уровня приложения.

Обработка исключений: →

Ответ 6

Исключение. Когда шаг в некотором действии не выполняется, все последующие шаги в этом действии просто НЕ выполняются. Здесь развеваются исключения.

Ошибка: - это когда, как и в первом случае, вы хотите остановить выполнение текущего кода, но прежде чем вам нужно освободить ранее выделенные ресурсы.


Сказав это,

Класс исключений Свойство HResult. HRESULT - это 32-битное значение, разделенное на три разных поля: код серьезности, код объекта и код .

Взгляните на этот пост, поможет вам лучше понять

Ответ 7

Исключения - это способ отчетности и обработки ошибок выполнения. Другими словами, они предназначены для сообщения об ошибках (перефразируя Krzysztof Cwalina в книге Руководство по разработке каркаса).

Ответ 8

Ошибки - это события. Класс исключений представляет ошибки, возникающие во время выполнения приложения (runtime), и предоставляет механизм для их обработки с использованием блоков try catch. Ошибки могут быть временем выполнения или ошибкой /s компилятора.

Примеры событий ошибки: HttpApplication.Error Событие System.Web dll, FileSystemWatcher.Error Событие System.IO Обе библиотеки DLL имеют одинаковое определение события Error

public event EventHandler Error

Из документации .Net Framework 4.5 https://msdn.microsoft.com/en-us/library/system.exception(v=vs.110).aspx

Класс исключений представляет ошибки, возникающие во время выполнения приложения.

Ошибки и исключения

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

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

Программные ошибки. Программная ошибка - это ошибка времени выполнения, которую невозможно избежать, написав код без ошибок.

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

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

Системные сбои. Системный сбой - это ошибка времени выполнения, которая не может обрабатываться программно значимым образом. Например, любой метод может вызывать исключение OutOfMemoryException, если среда выполнения обычного языка не может выделить дополнительную память. Обычно сбой обработки систем не обрабатывается обработкой исключений. Вместо этого вы можете использовать событие, такое как AppDomain.UnhandledException, и вызвать метод Environment.FailFast для регистрации информации об исключении и уведомления пользователя о сбое до истечения срока действия приложения.