The first version can be simplified with a tuple of exceptions rather than a union: ``` from typing import NoReturn class SomeError(Exception): ... class AnotherError(Exception): ... class StillAnotherError(Exception): ... def assert_never(value: NoReturn) -> NoReturn: # This also works at runtime as well assert False, f"This code should never be reached, got: {value}" FooError = (ValueError, SomeError, AnotherError) def foo(i: int): if i == 0: raise ValueError("Must not be zero") elif i == 1: raise SomeError("Must not be one") elif i == 2: raise AnotherError("Must not be two") print("that's ok") try: foo(0) except FooError as e: if isinstance(e, ValueError): print("value error") elif isinstance(e, SomeError): print("some error") else: # mypy successfully check for exhaustiveness: Argument 1 to "assert_never" has incompatible type "AnotherError"; expected "NoReturn" [arg-type] assert_never(e) raise ```