Я решил переписать свой ответ, чтобы быть конкретным для вашего фактического вопроса, и в более широком смысле, что приложение MVC - это не единственное, к чему применяются эти лучшие практики.
(1) Ответ. Это не очень хорошая практика. Вместо этого вы должны использовать метод компоновщика исключений, который напрямую вызывает HttpException.
public static void ThrowPageNotFoundException() {
throw new HttpException((Int32)HttpStatusCode.NotFound, "HTTP/1.1 404 Not Found");
}
(2) DO. Используйте методы построения исключений (например, код, который я предоставил). Это позволяет избежать дополнительных затрат на производительность, связанных с вашим собственным типом исключения, и позволяет ему быть встроенным. Члены, бросающие исключения, не получают вложения. Это было бы правильной заменой удобного метания.
(3) DO.Используйте исключения библиотеки базового класса, когда это возможно, и создавайте настраиваемое исключение, если нет абсолютно никакого базового исключения, отвечающего необходимым требованиям. Создание пользовательских исключений добавляет более глубокую иерархию исключений, что затрудняет отладку, когда это не нужно, добавляет дополнительные накладные расходы на производительность, а также добавляет дополнительный вздутие к вашей базе кода.
(4) НЕ. Выбросьте базовый класс System.Exception. Вместо этого используйте конкретный тип исключения.
(5) НЕ. Создавайте пользовательские исключения для удобства. Это не является хорошей причиной для специального исключения, поскольку исключения изначально являются дорогостоящими.
(6) НЕ. Создавайте собственные исключения, чтобы иметь свой собственный тип исключения.
(7) НЕ. Выбросьте исключения, которых можно избежать, изменив код вызова. Это предполагает, что у вас есть ошибка использования в API, а не фактическая проблема.
Любой, кто ознакомился с Руководством по дизайну рамок из серии разработки .NET, будет знать эту практику, и это очень хорошие практики. Это те самые методы, на которых была построена платформа .NET, и MVC.
Это веб-сайт MVC. При запросе объекта с идентификатором, который не существует, я делаю ошибку 404. Что не так с этим? Этот метод использует сам StackOverflow. Попробуйте перейти на http://stackoverflow.com/questions/1022181121312312331 – Marko
Исключения - это не что иное, как быстрое. Выброс исключения происходит в исключительных состояниях - метод inline в этом случае не имеет смысла. – zmbq
Неправильно. Одна из наиболее распространенных ошибок заключается в том, что разработчики часто считают, что исключения являются исключительными условиями. Производительность и оптимизация с исключениями имеют значение. –