Skip to content

prevent catch blocks that catch all errors without throwing unexpected errors further

Notifications You must be signed in to change notification settings

MrLoh/eslint-plugin-no-catch-all

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

eslint-plugin-no-catch-all

It is very easy to accidentally swallow errors with catch blocks, that should just crash because they are a simple developer error. Consider this case for example.

try {
  someFunctionWhichMayThrowSpecificError();
  // a stupid mistake
  let obj;
  if (obj.prop === "something") {
    // do something
  }
} catch (e) {
  // code to handle one specific error case
}

This error swallowing can be a real pain and lead to hard to debug issues that would otherwise be trivial to catch. Instead the catch block should always try to identify the specific error by checking for some specific prop that is set in the error constuctor or simply matching a string in the error message like so:

try {
  someFunctionWhichMayThrowSpecificError();
  // a stupid mistake
  let obj;
  if (obj.prop === "something") {
    // do something
  }
} catch (e) {
  if (e.networkError) {
    // code to handle one specific error case
  } else throw e;
}

This plugin provides a simple eslint rule to warn about catch blocks that don't rethrow. Of course there might sometimes be good reasons to catch all, but in those cases a simple // eslint-disable-next-line no-catch-all/no-catch-all will make the intention known better.

Configuration

Install the module via `yarn add -D eslint-plugin-no-catch-all" or "npm install --save-dev eslint-plugin-no-catch-all". Than configure it in your eslintrc file like so:

{
	...,
	"plugins": [
		...,
		"no-catch-all"
	],
	"rules": {
		...,
		"no-catch-all/no-catch-all": "warn"
	}
}

About

prevent catch blocks that catch all errors without throwing unexpected errors further

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published