为编程语言设计怎样的错误处理方式才是“好的”?

错误处理是工程上最常见的问题,然而像题主这样能意识到不同语言的错误处理存在的缺点的人并不太多。

Haskell早就给出了正确答案了,那就是Either + do notation,当然面向工程的大家学Haskell是不太现实的,但可以了解一下scala中与其等价的Try + for-yield:


这是一个从 https://www.zhihu.com/question/584713844/answer/2945439240 下的原始话题分离的讨论话题