gpt4 book ai didi

c++ - 如何使用自定义错误消息引发错误?

转载 作者:行者123 更新时间:2023-12-03 08:17:58 25 4
gpt4 key购买 nike

我有一个从文件名在堆上分配文本字体的函数。看起来像这样:

std::unique_ptr<sf::Font> newFont(std::string&& fileName)
{
auto font = std::make_unique<sf::Font>();
if (!font->loadFromFile(fileName))
{
exit(0);
}
return font;

}
Stack Exchange上的某人-代码审查告诉我,我需要更好的错误消息,因为如果找不到该文件,我的程序只会静默退出。但是由于我正在写游戏,所以我没有使用控制台窗口进行输出。我当时在想,可能会引发某种自定义编译器错误,该错误会在找不到文件时触发。诸如“无法分配字体: ”之类的内容。有没有办法做到这一点,还是应该以其他方式解决呢?

最佳答案

您正在寻找异常(exception):

std::unique_ptr<sf::Font> newFont(std::string&& fileName) noexcept(false)
{
auto font = std::make_unique<sf::Font>();
if (!font->loadFromFile(fileName))
{
throw std::runtime_error("Unable to allocate font: " + fileName);
}
return font;
}
现在我们可以使用 try- catch块打印错误消息:
int main() {
std::unique_ptr<sf::Font> font;
try {
font = newFont("myfont.ttf");
} catch ( const std::exception & ex ) {
PRINT_ERROR(ex.what());
return 1;
}
// do something with font ...
}
通常,您可以仅通过打印到 PRINT_ERROR来实现 std::cerr,但是由于您没有要打印到的控制台,因此您将需要对错误消息进行其他操作。选项包括:
  • 创建日志文件,并使用std::ofstream
  • 将错误打印到日志中
  • 直接在游戏中显示错误消息
  • 关于c++ - 如何使用自定义错误消息引发错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63637911/

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