It is a bad practice to throw
something that's not derived at some level from Error
. If you can't find an existing
Error
type that suitably conveys what you need to convey, then you should extend Error
to create one.
Specifically, part of the point of throwing Error
s is to communicate about the conditions of the error, but strings have far less
ability to communicate meaningfully than Error
s because they don't include stacktraces.
throw "Invalid negative index."; // Noncompliant
throw new Error("Invalid negative index.");