gpt4 book ai didi

c++ - 如何引发C++异常

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

我对异常处理的理解很差(即,如何出于我自己的目的自定义throw,try,catch语句)。

例如,我定义了一个函数,如下所示:int compare(int a, int b){...}
我希望函数在a或b为负数时引发一些消息异常。

在函数的定义中应该如何处理?

最佳答案

简单:

#include <stdexcept>

int compare( int a, int b ) {
if ( a < 0 || b < 0 ) {
throw std::invalid_argument( "received negative value" );
}
}

标准库附带了一个不错的 built-in exception objects集合,您可以将其抛出。请记住,您应该始终按值抛出并按引用进行捕获:
try {
compare( -1, 3 );
}
catch( const std::invalid_argument& e ) {
// do stuff with exception...
}

每次尝试后都可以有多个catch()语句,因此可以根据需要分别处理不同的异常类型。

您还可以重新引发异常:
catch( const std::invalid_argument& e ) {
// do something

// let someone higher up the call stack handle it if they want
throw;
}

并捕获异常,无论类型如何:
catch( ... ) { };

关于c++ - 如何引发C++异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64447660/

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