DeveloperError
Constructs an exception object that is thrown due to a developer error, e.g., invalid argument, argument out of range, etc. This exception should only be thrown during development; it usually indicates a bug in the calling code. This exception should never be caught; instead the calling code should strive not to generate it.
On the other hand, a RuntimeError indicates an exception that may be thrown at runtime, e.g., out of memory, that the calling code should be prepared to catch.