mirror of
https://github.com/changkun/modern-cpp-tutorial.git
synced 2025-12-17 04:34:40 +03:00
51 lines
1.0 KiB
C++
51 lines
1.0 KiB
C++
//
|
|
// 8.1.cpp
|
|
// modern c++ tutorial
|
|
//
|
|
// created by changkun at changkun.de
|
|
//
|
|
// noexcept
|
|
|
|
#include <iostream>
|
|
|
|
void may_throw() {
|
|
throw true;
|
|
}
|
|
auto non_block_throw = []{
|
|
may_throw();
|
|
};
|
|
void no_throw() noexcept {
|
|
return;
|
|
}
|
|
|
|
auto block_throw = []() noexcept {
|
|
no_throw();
|
|
};
|
|
|
|
int main()
|
|
{
|
|
std::cout << std::boolalpha
|
|
<< "may_throw() noexcept? " << noexcept(may_throw()) << std::endl
|
|
<< "no_throw() noexcept? " << noexcept(no_throw()) << std::endl
|
|
<< "lmay_throw() noexcept? " << noexcept(non_block_throw()) << std::endl
|
|
<< "lno_throw() noexcept? " << noexcept(block_throw()) << std::endl;
|
|
|
|
try {
|
|
may_throw();
|
|
} catch (...) {
|
|
std::cout << "捕获异常, 来自 my_throw()" << std::endl;
|
|
}
|
|
|
|
try {
|
|
non_block_throw();
|
|
} catch (...) {
|
|
std::cout << "捕获异常, 来自 non_block_throw()" << std::endl;
|
|
}
|
|
|
|
try {
|
|
block_throw();
|
|
} catch (...) {
|
|
std::cout << "捕获异常, 来自 block_throw()" << std::endl;
|
|
}
|
|
}
|