如何手动记录错误
目标是能够在以后查看错误。您可以通过多种方式实现这一目标。
一种方法是在数据库中手动记录错误。
准备数据库以记录错误
设置一些代码将错误记录到数据库
设置一个全局错误处理程序来捕获错误。(此错误处理程序将调用步骤 2 中的代码)
在后端设置一个端点,这样前端也可以记录错误。(此端点将调用步骤 2 中的代码)
例如,您可以使用带有错误集合的MongoDB 数据库。每次在您的应用程序中发生错误时,将有关它的信息添加到集合中。您可以按照自己喜欢的任何方式组织信息。例如,您可以按错误或异常的类型、错误消息或错误调用堆栈中的最后一个代码进行组织。
设置完成后,您可以设置一个全局错误处理程序。将在您的应用程序中发生错误时调用此错误处理程序。在处理程序中,记录数据库中的错误。
不同的框架和“环境”提供了不同的方式来设置全局错误处理程序。例如,在 Unity 游戏引擎中,您可以使用Application.logMessageReceived += Handler;
. 在网站的前端,您可以使用window.addEventListener('error', handler);
.
最后,您可以设置一个端点,以便前端也可以记录错误。然后,前端可以使用有关它遇到的错误的信息发出网络请求。
这是您可以从前端进行的示例调用:
function handleError(errorEvent) {
const {error} = errorEvent;
const data = {stack: error.stack, message: error.message, type: error.name};
fetch('https://example.com/errors', {method: 'POST', body: JSON.stringify(data)});}window.addEventListener('error', handleError);
handleError
任何时候发生错误时都会执行上面的函数。它创建一个包含有关错误的有用信息的对象。然后,它向后端发送网络请求。然后后端将记录有关错误的信息,以便以后查看。
您需要尽可能多的有关错误的有用信息。这将帮助您稍后调试它。
文章.NET上异常的最佳做法有一些这方面的指导方针。适用于错误值和异常,它们是:
如果相关,请在您的编程语言中使用预定义的错误类型。如果预定义的类型不适用,则仅创建自定义类型。
如果您创建自定义错误类型:
它们通常应该是主要错误类型的子类(如果您使用 OOP 语言)
他们可以选择拥有自定义属性(如果它们有用的话)
使用语法正确的错误信息。例如“找不到文件“foo.txt”。”。
在每个错误中包含本地化的字符串消息(如果您的应用程序已本地化)