错误处理

捕获和抛出异常的时机

  • 使用第三方库通常需要进行捕获;
  • 写给他人使用的第三方库则通常需要抛出相应异常;

自定义错误类型

下面提供 ES5ES6 两种自定义错误类型的写法

// ES6
class CustomError extends Error {
constructor(message) {
super(message)
this.name = 'CustomError'
}
}
// ES5
function CustomError(message) {
this.name = 'CustomError'
this.message = message
Error.captureStackTrace(this, CustomError)
}
CustomError.prototype = new Error()
CustomError.prototype.constructor = CustomError

记录错误日志

记录错误日志通常使用 <img> 标签, 其可以避免跨域, 用法如下:

function logError(msg) {
const img = new Image()
img.src = `/log?${encodeURIComponent(msg)}`
}