给大家出个思考题吧:函数执行过程中,出现异常,但是并没有捕获,那么函数的返回值是什么?

很多人在这个问题上犯难了,究其根本是没有明白“函数有两个出口”这个道理。

正确的答案应该是:函数还没有走到有返回值的出口就已经结束了,谈不上有返回值。

在shell里面,函数对应有三个终端:标准输入,标准输出,标准错误输出。这就是函数还有两个出口的明确体现。

我们学习函数的时候,都知道函数有return语句以表示返回值,从而形成了思维定势,认为函数只有一个出口:return出口。实际上,这样想还是有点浅薄了。我觉得,只有深刻的认识到函数有两个出口”这个道理才能明白异常的机制。

另外,我再给大家延伸一点:在TypeScript里面专门定义了never关键词,它就是表示出现异常而没有走到有返回值这个出口的情况。

吹尽狂沙始到金,很多时候我们需要大量的历练和多学科的知识掌握,才能明白世间万物的道理,从异常的新理解可见一斑。技术之路遥远无边,望诸位读者继续努力和加油!

标签: none

添加新评论