遇到异常时给定函数的返回值是多少?

时间:2017-02-01 20:27:25

标签: c++ c++11

delay_s(1000)检查用户名的长度,当length大于或等于5时返回checkUsername()。否则返回true。 函数false应该在checkUsername()上返回false,但似乎没有BadLengthException()checkUsername()中的任何代码返回BadLengthException::what()。但是当遇到长度小于5的用户名时,该程序仍能正常工作。这里发生了什么?返回值如何通过false

false

2 个答案:

答案 0 :(得分:1)

checkUsername()中抛出异常时,它会停止该函数中的处理并返回到main()的调用函数。由于调用是在try块中进行的,因此异常由catch块处理。

完全忽略if()语句,catch不关心该函数中发生的事情,只打印“Too short:”

答案 1 :(得分:1)

函数可以返回值或抛出异常,它不能同时执行这两个操作,它们是互斥的。如果它成功返回一个值,表示代码没有抛出异常,并且抛出异常,则表示它没有使它返回值。

此外,捕获返回值也会中断,代码会直接跳转到您定义的catch块。如果你忽略了自动对象破坏和goto类型实现之类的事情,这就像是一个很难finally的概念,它会在异常冒泡的过程中发生。