【发布时间】:2014-10-01 21:15:01
【问题描述】:
我有一个在两个进程之间使用的方法,如果它存在,它必须返回一个寄存器值 (uint32_t),但如果传递的索引超出范围,我还需要返回一个错误。
uint32_t getRegister(uint32_t index) {
...
}
我不想将指针作为输出参数传递。 那么,我该怎么做呢?我可以抛出异常吗?有没有更好的解决方案?
提前致谢!
【问题讨论】:
-
与
vector的operator[]和vector::at()比较。第一个没有通过第二个例外。用户可以根据自己的需要选择哪一种。所以底线,投掷或不投掷取决于您的需求。还要记住,越界需要检查,这可能会减慢您的应用程序。 -
考虑让函数崩溃。如果有人要求错误的索引,那是需要修复的错误,而不是需要捕获的异常。你可以很好地使用
assert(index_is_valid);。
标签: c++ exception error-handling throw