Kromě vracení option nebo result je v OCamlu i celkem běžné vyhazovat výjimku.
Třeba funkce List.find ze standardní knihovny vyhodí Not_found, když nenajde prvek, který splňuje predikát.
Výhodou je, že kód vyhazující výjimky nemusí při úspěchu obalit každý výsledek do další hodnoty, takže míň zatěžuje GC. A vyhazování nebo chycení výjimky v OCamlu je rychlejší než v C++ nebo pod JVM či CLR.
jj já o tom poprvé četl také tam (F# for F&F): https://fsharpforfunandprofit.com/posts/recipe-part2/