跳至主要内容

只抛出错误

禁止抛出非 Error 值作为异常。

💭

此规则需要 类型信息 才能运行。

建议只 throw Error 对象本身或使用 Error 对象作为基对象的自定义异常对象。Error 对象的基本好处是它们会自动跟踪其构建和起源位置。

此规则限制了可以抛出作为异常的内容。

no-throw-literal 迁移

此规则以前称为 no-throw-literal。我们鼓励用户迁移到新名称 only-throw-error,因为旧名称将在 typescript-eslint 的未来主要版本中删除。

新名称是具有相同功能的直接替换。

示例

此规则旨在通过禁止抛出字面量和其他不可能是 Error 对象的表达式来维护抛出异常时的一致性。

throw 'error';

throw 0;

throw undefined;

throw null;

const err = new Error();
throw 'an ' + err;

const err = new Error();
throw `${err}`;

const err = '';
throw err;

function getError() {
return '';
}
throw getError();

const foo = {
bar: '',
};
throw foo.bar;
在 Playground 中打开

如何使用

.eslintrc.cjs
module.exports = {
"rules": {
// Note: you must disable the base rule as it can report incorrect errors
"no-throw-literal": "off",
"@typescript-eslint/only-throw-error": "error"
}
};

在 Playground 中尝试此规则 ↗

选项

参见 eslint/no-throw-literal 选项

此规则添加了以下选项

interface Options {
/**
* Whether to always allow throwing values typed as `any`.
*/
allowThrowingAny?: boolean;

/**
* Whether to always allow throwing values typed as `unknown`.
*/
allowThrowingUnknown?: boolean;
}

const defaultOptions: Options = {
allowThrowingAny: false,
allowThrowingUnknown: false,
};

何时不使用它

类型检查的 lint 规则比传统的 lint 规则更强大,但也需要配置 类型检查的 lint。如果您在启用类型检查规则后遇到性能下降,请参阅 性能故障排除

资源

来自 ESLint 核心 的 ❤️。