20 lines
759 B
Plaintext
20 lines
759 B
Plaintext
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 literals have far less ability to communicate meaningfully than \`+Error+`s because they don't include stacktraces.
|
|
|
|
== Noncompliant Code Example
|
|
|
|
----
|
|
throw 404; // Noncompliant
|
|
throw "Invalid negative index."; // Noncompliant
|
|
----
|
|
|
|
== Compliant Solution
|
|
|
|
----
|
|
throw new Error("Status: " + 404);
|
|
throw new Error("Invalid negative index.");{code}
|
|
----
|
|
|
|
include::../see.adoc[]
|