Actually (insert nerd emoji) this is a direct descendant from tagged union type, which existed in ALGLO 68, an imperative language.
Java's checked exception is just an (very anti-ergonomic) implementation of tagged union type.
Java's checked exception is just an (very anti-ergonomic) implementation of tagged union type.