gpt4 book ai didi

c++ - 为什么我的程序不执行第二个 catch block ?

转载 作者:行者123 更新时间:2023-11-28 02:09:25 24 4
gpt4 key购买 nike

我是异常处理的新手,这是一个关于我在关于该主题的第一个作业中遇到的问题的问题。我特意为程序提供了数小时和数秒的无效条目以测试 try/catch,因此两者都应该抛出异常。我有点明白为什么第一个 catch block 会捕获两次抛出,但我不确定如何让它同时使用两个 catch block ?谢谢! (输出为“错误:无效的小时输入”)

int main()
{
MilTime Object;
string BadHour;
string BadSeconds;

try
{
if ( (Object.getHour() < 0) || (Object.getHour() > 2359) ) throw BadHour;
if ( (Object.getSec() < 0) || (Object.getSec() > 59 ) ) throw BadSeconds;
}
catch (string BadHour)
{
cout << "ERROR, INVALID HOUR ENTRY";
}
catch (string BadSeconds)
{
cout << "ERROR, INVALID SECOND ENTRY";
}
return 0;

最佳答案

catches 是按类型区分的,而不是按参数名称。

原则上你可以定义不同的异常类型,或者你可以使用例如std::system_error 允许您传递整数错误 ID。

然而,在实践中,异常的特定原因除了用于日志记录之外没有什么意义,因为它通常不会影响如何处理它。一个异常(exception)表示代码未能按照其契约(Contract)规定的方式执行。 catch 只能再次尝试执行该目标(可能以某种不同的方式),否则就会失败。

关于c++ - 为什么我的程序不执行第二个 catch block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36275050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com