]>
Commit | Line | Data |
---|---|---|
eb39fafa DC |
1 | /** |
2 | * @fileoverview Rule to restrict what can be thrown as an exception. | |
3 | * @author Dieter Oberkofler | |
4 | */ | |
5 | ||
6 | "use strict"; | |
7 | ||
8 | const astUtils = require("./utils/ast-utils"); | |
9 | ||
10 | //------------------------------------------------------------------------------ | |
11 | // Rule Definition | |
12 | //------------------------------------------------------------------------------ | |
13 | ||
34eeec05 | 14 | /** @type {import('../shared/types').Rule} */ |
eb39fafa DC |
15 | module.exports = { |
16 | meta: { | |
17 | type: "suggestion", | |
18 | ||
19 | docs: { | |
8f9d1d4d | 20 | description: "Disallow throwing literals as exceptions", |
eb39fafa | 21 | recommended: false, |
f2a92ac6 | 22 | url: "https://eslint.org/docs/latest/rules/no-throw-literal" |
eb39fafa DC |
23 | }, |
24 | ||
25 | schema: [], | |
26 | ||
27 | messages: { | |
28 | object: "Expected an error object to be thrown.", | |
29 | undef: "Do not throw undefined." | |
30 | } | |
31 | }, | |
32 | ||
33 | create(context) { | |
34 | ||
35 | return { | |
36 | ||
37 | ThrowStatement(node) { | |
38 | if (!astUtils.couldBeError(node.argument)) { | |
39 | context.report({ node, messageId: "object" }); | |
40 | } else if (node.argument.type === "Identifier") { | |
41 | if (node.argument.name === "undefined") { | |
42 | context.report({ node, messageId: "undef" }); | |
43 | } | |
44 | } | |
45 | ||
46 | } | |
47 | ||
48 | }; | |
49 | ||
50 | } | |
51 | }; |