gpt4 book ai didi

c++ - 初学者如何处理用户输入类型不正确引起的异常

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:47:43 26 4
gpt4 key购买 nike

这篇文章可能与常见的有关 c++ 异常的问题有点不同。

在 C++ 中,某人如何处理用户输入错误,我的意思是当提示用户输入整数时,他们输入了 float 或字符串/字符,反之亦然。你知道有人在提示他们的年龄时输入他们的名字。

我基本上是在谈论 C++ 中的内容等同于 Python 中的内容,例如:

try:
[code to prompting user for an integer.]
exception ValueError:
[code to run if exception is thrown.]

如果你们中的一个很棒的家伙有空闲时间以初学者能够理解的方式向我解释这一点,那将是非常感激的家伙。

谢谢。

最佳答案

try catch 的基本示例是这样的:

try
{
// code that throws an exception
}
catch(...)
{
// exception handling
}

请注意,三个点对于捕获所有异常是完全有效的,尽管您不知道您捕获了“什么”。这就是为什么您应该更喜欢在括号中指定类型。

要捕获的异常可以是任何类型,以 int 开头并以指向派生自异常类的对象的指针结尾。这个概念非常灵活,但是您必须知道可能会发生什么异常。

这可能是一个更具体的例子,使用 std::excpetion:注意引用的捕获。

try
{
throw std::exception();
}
catch (const std::exception& e)
{
// ...
}

下一个示例假定您使用 MFC 库编写 C++。它阐明了执行 CException catch 是因为 CFileException 派生自 CException。如果不再需要 CException 对象,它会自行删除。除非您的异常源自 CException,否则您不应该抛出指针并坚持上面的示例。

try
{
throw new CFileException();
}
catch (CException* e)
{
// CFileException is caught
}

最后但同样重要的是:您可以定义多个 catch block 来捕获不同的异常:

try
{
throw new CFileException();
}
catch (CMemoryException* e)
{
// ignore e
}
catch (CFileException* e)
{
// rethrow exception so it gets handeled else where
throw;
}
catch (CException* e)
{
// note that catching the base class should be the last catch
}

关于c++ - 初学者如何处理用户输入类型不正确引起的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9799736/

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