From a53f4aab6ced7b80e184c508d554e8e98264d624 Mon Sep 17 00:00:00 2001 From: xiemengjun Date: Tue, 13 Nov 2012 23:27:48 +0800 Subject: [PATCH] =?UTF-8?q?=E9=94=99=E8=AF=AF=E5=A4=84=E7=90=86=E5=B0=8F?= =?UTF-8?q?=E8=8A=82=E5=AE=8C=E6=88=90=E4=BA=86=E4=B8=80=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 12.2.md | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/12.2.md b/12.2.md index 3736ebf7..32f025f0 100644 --- a/12.2.md +++ b/12.2.md @@ -1,14 +1,28 @@ # 12.2 网站错误处理 我们的Web应用一旦上线之后,那么各种错误出现的概率都有,Web应用日常运行中可能出现多种错误,具体如下所示: -- 数据库错误 -- 应用运行时错误 -- HTTP错误 -- 操作系统出错 -- 网络出错 +- 数据库错误:指与访问数据库服务器或数据相关的错误。例如,以下可能出现的一些数据库错误。 + + - 连接错误:这一类错误可能是数据库服务器网络断开、用户名密码不正确、或者数据库不存在。 + - 查询错误:使用的SQL非法导致错误,这样SQL错误如果程序经过严格的测试应该可以避免。 + - 数据错误:数据库中的约束冲突,例如一个唯一字段中插入一条重复主键的值就会报错,但是如果你的应用程序在上线之前经过了严格的测试也是可以避免这类问题。 +- 应用运行时错误:这类错误范围很广,涵盖了代码中出现的几乎所有错误。可能的应用错误的情况如下: + + - 文件系统和权限:应用读取不存在的文件,或者读取没有权限的文件、或者写入一个不允许写入的文件,这些都会导致一个错误。应用读取的文件如果格式不正确也会报错,例如配置文件应该是ini的配置格式,而设置成了json格式就会报错。 + - 第三方应用:如果我们的应用程序耦合了其他第三方接口程序,例如应用程序发表文章之后自动调用接发微博的接口,所以这个接口必须正常运行才能完成我们发表一篇文章的功能。 + +- HTTP错误:这些错误是根据用户的请求出现的错误,最常见的就是404请求,虽然可能会出现很多不同的错误,但其中比较常见的错误还有401未授权错误(需要认证才能访问的资源)、403禁止错误(不允许用户访问的资源)和503错误(程序内部出错)。 +- 操作系统出错:这类错误都是由于应用程序上的操作系统出现错误引起的,主要有操作系统的资源被分配完了,导致死机,还有操作系统的磁盘满了,导致无法写入,这样就会引起很多错误。 +- 网络出错:指两方便的错误,一方面是用户请求应用程序的时候出现网络断开,这样就导致连接中断,这种错误不会造成应用程序的崩溃,但是会影响用户访问的效果,另一方面是应用程序读取其他网络上的数据,这种网络断开会导致读取失败,这种需要对应用程序做有效的测试,能够避免这类问题出现的情况下程序崩溃。 ## 错误处理的目标 +在实现错误处理之前,我们必须明确错误处理想要达到的目标是什么,错误处理系统应该完成一下工作: +- 通知访问用户出现错误了 +- 记录错误 +- 回滚当前的请求 +- 根据错误级别发送邮件 +- 保证现有程序可运行可服务 ## 如何处理错误 ## 小结