this is called a bottom type in a type system. In JVM languages null and the throw expression return the bottom type.
The only other option is to not have nil values.
The only other option is to not have nil values.
Rust has a bottom type (!)[0] without it implementing all traits by default while using a different type (Result) for error propagation. Plus having nil/null as a a value of the bottom type violates some aspects of bottomness.
[0] https://github.com/rust-lang/rfcs/blob/master/text/1216-bang...
Null is not a value of bottom type. Bottom type has no values.