我们可以继承异常类型,实现自己需要的功能或区分出自己的错误。

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
    }
}