Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I genuinely disagree. There is no difference between a checked exception and a Result.

- In concurrent programming uncaught exceptions won’t leave the future. Both values are available to you just like Results. I also don’t think arguments for concurrent programming are valid though. 99% of all code is single threaded.

- It is checked.

- Result infects the call stack as well.

- handling the error case with a checked exception is also mandatory with handling the success case. There is no separate “execution regime”. What is the difference here:

    val a = try {
        a();
    } catch (b) {
        onB();
    }
    
    val a = match (a()) {
        Success(a) => a
        Failure(b) => onB()
    }


The difference is you can just call

    val a = a();
And start the stack unwinding. The `try/catch` is not mandatory to call a().


You definitely just don't know how checked exceptions work. This is not true at all. The compiler will not let you call a(); without handling the exception or checking it up the stack. The same way results work.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: