因为你的理解有问题,catch throw 原理是:程序开始会从 catch 的程序块往下走,catch 会带一个标签(你例子中标签是 quitRequested)当遇到带有同名标签的 throw 的时候就会跳出 catch 代码块,如果 throw 后面带条件,同时还要满足条件才跳出,否则不跳出,将会继续执行 catch 代码块的全部代码。
因此如果你一直不输入“!”的条件下 程序会让你输入 3 次 , 跳出 catch 后还会让你输入一次,结果如下
Name:空格 + 你的输入 Age:空格 + 你的输入 Sex:空格 + 你的输入 Name:你的输入
如果你第 1 次就输入“!”
Name:空格! Name:你的输入
如果你第 2 次才输入“!”
Name:空格 + 你的输入 Age:空格! Name:你的输入