【发布时间】:2020-06-09 15:30:53
【问题描述】:
我想了解 C++ 中的所有异常,我找到了这段代码 here
发出一些,因为我在 Linux 上的 OOM 杀手没有发出终止。
我只是不明白 return d > 1e7 ? throw std::overflow_error("too big") : d; 到底在做什么:
#include <iostream>
#include <stdexcept>
double f(double d)
{
return d > 1e7 ? throw std::overflow_error("too big") : d; //what is going on here?
}
int main()
{
try {
std::cout << f(1e10) << '\n';
} catch (const std::overflow_error& e) {
std::cout << e.what() << '\n'; // information from length_error printed
}
return 0;
}
【问题讨论】:
-
听起来你可以使用good C++ book
-
有什么不明白的?在
try块内调用f()函数,如果d参数无效,则该函数将引发std::overflow_error异常,然后catch块将捕获该异常。您将不得不更具体地说明您对此不了解的具体内容。 -
你问了一个非常相似的question。恕我直言,你应该提到这一点并解释这个有何不同。为什么您在那里得到的答案不适用于这里?我这里又有同样的评论:为什么你希望程序在捕获异常时终止?
-
可能的搜索词:三元运算符。
-
@user4581301
1e7是10000000.0的另一种写法。你真的需要从good book 以结构化的方式学习 C++。如果你看到一些你不知道的新东西,首先努力搜索以前的问题,如果你没有找到任何东西,具体询问那件事,例如。 “这段代码中的1e7是什么意思?”。例如,当我搜索c++ 1e7时,我得到的第二个链接是this question。