互联网上关于std :: throw_with_nested和C ++的信息非常少,以及如何使用它。我目前在我的所有代码中实现它,但这是不好的做法还是完全没问题?或者我应该以某种方式做不同的事情?我很想听听别人对此事的意见,谢谢。如果在这个问题上有另一个帖子,我很抱歉,但我只能找到很少。我的代码示例如下:
void GkCrypto::Crypto::generateRandomBytes(unsigned char *buf)
{
try {
if (1 != RAND_bytes(buf, sizeof(buf))) {
handleErrors();
}
} catch (const std::exception &e) {
std::throw_with_nested(std::runtime_error(e.what()));
}
}
void GkCrypto::Crypto::handleErrors()
{
unsigned long errCode;
std::cerr << gettext("An error has occured!") << std::endl;
while (errCode = ERR_get_error()) {
char *err = ERR_error_string(errCode, NULL);
std::cerr << err << std::endl;
char *errBuf = NULL;
std::sprintf(errBuf, gettext("An error has occured! Error:\n\n %s\n"), err);
throw std::runtime_error(errBuf);
}
abort();
}