So instead of some imagined return of "int or throw Exception" you now have "(int, error)", which basically means that the result of a function call can be any of these four options:
- ( value, no error)
- (no value, error)
- ( value, error)
- (no value, no error)
And due to the lack of Generics you can't abstract over your error handling.And due to the lack of proper ADTs you can't even properly model "value OR error" manually.