处理数据仓库里的数据的时候很可能会遇到一些异常情况,在应用里我们要处理这些异常情况,之前我们已经在应用里创建了一个默认的异常处理器,所以在接口的处理器里面遇到了异常情况,就可以把它交给这个默认的异常处理器去处理。
回到项目,打开 post.controller,这里可以修改一下 index 这个函数,剪切一下函数里面要做的事情,这里可以用一个 try catch 区块,把要做的事情放在 try 里面,在 catch 区块里可以处理遇到的异常情况。
发生异常,可以执行 next() 函数,带着 error。这样会把这个异常情况交给应用的默认的异常处理器处理。
这个异常处理器是在 src/app/app.middleware 里定义的,打开这个文件,就是这里的 defaultErrorHandler,可以再简单修改一下这个异常处理器。
里面用 if 判断一下,error.message,如果 error 里有 message,我们就在控制台上输出这个 error.message 。
下面可以手工制造一个异常情况,打开 post.service,修改一下这段 SQL,把 post.id 换成 post1.id 。保存一下。
在 HTTP 客户端,发送一下 内容列表 请求,这次从服务端那里得到的是个异常的响应,状态码是 500,响应的数据里有个 message 属性,提示 服务暂时出了点问题。这个响应是应用里的异常处理器发过来的。
再到终端观察一下,你会发现这里也输出了一条错误信息,提示 Unknown column post1.id ,意思是没找到这个栏目。
回到项目,恢复一下这段 SQL,把 post1.id 换成原来的 post.id ,保存一下文件,然后到 HTTP 客户端重新发送一下这个内容列表请求,这次又会得到一个正常的响应。