1
Vývoj / FP a error handling
« Poslední příspěvek od fortran1986 kdy Dnes v 18:31:29 »Nechápem, prečo keď FP zavrhuje výnimky a namiesto toho odporúča používať union typy ako Result alebo Option, tak F# aj tak podporuje klasické výnimky z .NET-u a dokonca má aj vlastné, neobjektové výnimky nazývané exception (čo je špecialita F#, v C# ani v iných jazykoch to nefunguje):
.NET exceptions:
F# exceptions:
typ result:
Okrem toho má ešte aj asynchrónne výnimky cez Async.Catch, a zároveň poskytuje typy Result aj Option. Nehovorím, že je to blbosť – z pohľadu výkonu je Result lepší ako výnimky. Ale aj tak nechápem, prečo sa vo F# dá robiť jedna vec piatimi rôznymi spôsobmi. Začína to pôsobiť, akoby F# bobtnal podobne ako C++.
Aký spôsob error handlingu používate v FP jazykoch?
.NET exceptions:
Kód: [Vybrat]
open System
raise(Exception(message = "Klasicka .NET exception"))F# exceptions:
Kód: [Vybrat]
exception Chyba of string
raise(Chyba "Typovo cista F# exception")typ result:
Kód: [Vybrat]
let (/) x y =
match y with
| 0 -> Error("Delenie nulou neni povolene")
| _ -> Ok (x / y)
Okrem toho má ešte aj asynchrónne výnimky cez Async.Catch, a zároveň poskytuje typy Result aj Option. Nehovorím, že je to blbosť – z pohľadu výkonu je Result lepší ako výnimky. Ale aj tak nechápem, prečo sa vo F# dá robiť jedna vec piatimi rôznymi spôsobmi. Začína to pôsobiť, akoby F# bobtnal podobne ako C++.
Aký spôsob error handlingu používate v FP jazykoch?
Poslední příspěvky
