gpt4 book ai didi

c++ - 如何抛出 C++ 异常

转载 作者:IT老高 更新时间:2023-10-28 11:27:10 26 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/8480640/

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