JavaScript 基础
Document
运算符
深入数据和类型
函数进阶
原型、继承
类
浏览器存储
Web API
事件
错误处理
异步编程
网络请求
模块
练习
实例
工具与规范
软件架构模式
设计模式
我们可以继承异常类型,实现自己需要的功能或区分出自己的错误。
class ValidationError extends Error {
constructor(message) {
super(message)
this.name = "ValidationError"
}
}
$$jsdemo$$
$$edit$$
class ValidationError extends Error {
constructor(message) {
super(message)
this.name = "ValidationError"
}
}
function getInput() {
let result = prompt("请输入用户名:")
if (result.length < 2) {
throw new ValidationError("用户名必须大于等于 2 个字符")
}
return result
}
function getUsername() {
let result = getInput()
if (result == "管理员") {
throw new ValidationError("用户名不能为管理员")
}
return result
}
try {
let result = getUsername()
// 无需再判断返回的数据是否为 Error
alert("你的用户名是:" + result)
} catch (error) {
if (error instanceof ValidationError) {
// 自己的错误,处理
alert("输入不合法:" + error.message)
} else {
// 其他错误,不处理
throw error
}
}