引子
在前端异常示例里面观察了各类异常的示例,按照区分判断的思路 3 ,看下该如何解析异常信息。主要还是 Sentry 和 TraceKit 里面部分处理逻辑。
@sentry/browser 版本 : 5.9.1 。 TraceKit 版本: 0.4.6 。
TraceKit 解析
TraceKit 对于 JavaScript 定义的 Error 中几种类型有比较好的处理,对异常相关信息进行再解析格式化。具体可见 Read TraceKit 。
Sentry 解析
Sentry 中在之前提过区分的逻辑上,提供了对应的几种处理方法:
// 非完整源码,主要为了体现思路
let event
if (isErrorEvent(exception) && exception.error) {
event = eventFromStacktrace(computeStackTrace(exception));
return event;
}
if (isDOMError(exception) || isDOMException(exception)) {
event = eventFromString(exception);
return event;
}
// isError 包含的类型有 [object Error] [object Exception] [object DOMException] ,以及继承自 Error 对象的自定义对象。
if (isError(exception)) {
event = eventFromStacktrace(computeStackTrace(exception));
return event;
}
// isPlainObject 检查类型是 [object Object],isEvent检查的是 wat instanceof Event
if (