如何为用户编写正确的错误消息?
How to write proper error message for the users?
好吧,这就是我发现大部分时间都很困难的事情。即编写正确的错误信息供客户端在出现错误时查看。
一种情况的例子是我使用 Axios 和第三方 api 来获取数据。我需要为 Axios 的错误以及来自 api.
的错误编写正确的错误消息
根据 Axios 的错误处理文档:
try {
} catch ( err ) {
if ( err.response ) {
// client received an error response (5xx, 4xx)
} else if ( err.request ) {
// client never received a response, or request never left
} else {
// anything else
}
}
而第三方api的错误是err.response
里面的一个对象叫data
。因此,我的 catch 块看起来像这样:
try {
} catch ( err ) {
if ( err.response ) {
if ( err.response.data ) {
// api error
return;
}
// client received an error response (5xx, 4xx)
} else if ( err.request ) {
// client never received a response, or request never left
} else {
// anything else
}
}
对于 API 错误,我可以简单地使用 err.response.data.message
,因为这些消息对用户来说是直截了当且易于理解的。但问题在于可能由 Axios 或我的服务器引起的其他类型的错误。而且 Axios 不提供简单的消息。
那么在这些情况下我可以用什么来回应呢?我可以用 Something went wrong, please try again
来回应,但那太含糊了。
有人请帮助。
这是我所做的。涉及两件事
- 在退回给用户的邮件中附加某种唯一标识符。
- 使用
console.error()
或一些类似的日志记录操作在内部记录消息,以便您可以对其进行故障排除。
if ( err.response ) {
/* format and send the useful err.response message to the browser user */
return
} else {
const errid = uuidv4()
const message = 'Something went wrong. ' +
'If it keeps happening please contact us and mention error id ' +
errid
console.error (message, err)
/* send the message to the browser user */
return
}
这让不幸的用户相信您可以解决问题。它还为您提供了足够的数据来解决问题。
一旦您对可能导致麻烦的 API 有了一些实际经验,您就可以改进错误处理,甚至考虑重试请求。但除非你有经验,否则你无法做到这一点。
好吧,这就是我发现大部分时间都很困难的事情。即编写正确的错误信息供客户端在出现错误时查看。
一种情况的例子是我使用 Axios 和第三方 api 来获取数据。我需要为 Axios 的错误以及来自 api.
的错误编写正确的错误消息根据 Axios 的错误处理文档:
try {
} catch ( err ) {
if ( err.response ) {
// client received an error response (5xx, 4xx)
} else if ( err.request ) {
// client never received a response, or request never left
} else {
// anything else
}
}
而第三方api的错误是err.response
里面的一个对象叫data
。因此,我的 catch 块看起来像这样:
try {
} catch ( err ) {
if ( err.response ) {
if ( err.response.data ) {
// api error
return;
}
// client received an error response (5xx, 4xx)
} else if ( err.request ) {
// client never received a response, or request never left
} else {
// anything else
}
}
对于 API 错误,我可以简单地使用 err.response.data.message
,因为这些消息对用户来说是直截了当且易于理解的。但问题在于可能由 Axios 或我的服务器引起的其他类型的错误。而且 Axios 不提供简单的消息。
那么在这些情况下我可以用什么来回应呢?我可以用 Something went wrong, please try again
来回应,但那太含糊了。
有人请帮助。
这是我所做的。涉及两件事
- 在退回给用户的邮件中附加某种唯一标识符。
- 使用
console.error()
或一些类似的日志记录操作在内部记录消息,以便您可以对其进行故障排除。
if ( err.response ) {
/* format and send the useful err.response message to the browser user */
return
} else {
const errid = uuidv4()
const message = 'Something went wrong. ' +
'If it keeps happening please contact us and mention error id ' +
errid
console.error (message, err)
/* send the message to the browser user */
return
}
这让不幸的用户相信您可以解决问题。它还为您提供了足够的数据来解决问题。
一旦您对可能导致麻烦的 API 有了一些实际经验,您就可以改进错误处理,甚至考虑重试请求。但除非你有经验,否则你无法做到这一点。