关于错误处理
try…catch语句,有一定局限性
- 一般适合语句的错误处理
- 不适合页面不存在等问题的处理
错误处理配置
1. Web.config错误处理典型配置
在system.web节点中添加配置
<customErrors defaultRedirect="~/ErrorPage.html" mode="RemoteOnly">
<error statusCode="404" redirect="~/NonFound.html"/>
</customErrors>
defaultRedirect:发生错误时,浏览器重定向到的URL
mode:On表示启动自定义错误,Off表示禁用自定义错误,RemoteOnly向远程客户端显示自定义错误,并且向本地主机显示ASP.NET错误
statusCode:Http中特定的错误状态码
redirect:发生该错误状态码时重定向的页面
2.使用HandleError处理错误
Web.config配置的局限性
- 针对整个网站点的错误,配置错误显示页面,但是这个信息显示一般比较模糊
- 如果针对某种类型的控制器,甚至动作方法,显示更具体的信息,使用Web.config方式不合适
- 使用try catch也不合适(业务代码和错误代码混编)
HandleError特性:针对动作方法更方便的错误显示方式
[HttpPost]
[HandleError( ExceptionType =typeof(System.Exception),View ="Error")]
public ActionResult GetUserInfor(int Id)
{
UserServer server = new UserServer();
UserInfor user = server.GetUserDetail(Id);
ViewBag.User = user;
return View();
}
ExceptionType:捕获异常的类型
View:特定的Error视图
- 在控制器中添加特性
- Error视图:创建当前控制器对应的View文件夹中或在Shared文件夹中
- 应用次特性后,Web.Config中定义的错误处理配置将失效
在Error视图中可以实现错误的详细信息
原因是:在发生错误时,HandleError会将异常信息封装成一个HandleErrorInfor对象,然后传递给Error视图
常见的错误状态码
404:表示未找到文件
403:表示禁止访问
500:内部服务器错误
[https://www.cnblogs.com/daiyacheng1991/p/11411511.html]:
状态码 | 类别 | 原因 |
---|---|---|
1xx | Informational(信息性状态码) | 接收的请求正在处理 |
2xx | Success(成功状态码) | 请求正常处理完毕 |
3xx | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4xx | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5xx | Server Error(服务器错误状态码) | 服务器处理请求错误 |