Исключения являются основой языков программирования. Они обычно используются для обработки аномальных или исключительных условий, требующих специальной обработки, выходящие за рамки нормального потока приложения. Некоторые языки, такие как C++ или Java, используют их свободно. Но не каждый язык следует этому дизайну. C# или Kotlin не имеют проверяемых исключений.
thoughtworks.com
The Either data type as an alternative to throwing exceptions
