GCC Code Coverage Report
Directory: . Exec Total Coverage
File: main.cpp Lines: 19 21 90.5 %
Date: 2018-10-12 21:07:13 Branches: 9 13 69.2 %

Line Branch Exec Source
1
#include <stdexcept>
2
3
3
int function_that_may_throw(bool die) {
4
3
    if (die) {
5
1
        throw std::runtime_error("the error");
6
    } else {
7
2
        return 42;
8
    }
9
}
10
11
struct RAII {
12
    bool die;
13
14
    RAII(bool);
15
    ~RAII();
16
1
    int method_that_may_throw() const {
17
1
        return function_that_may_throw(die);
18
    }
19
};
20
21
1
RAII::RAII(bool die) :die(die) {}
22
1
RAII::~RAII() {}
23
24
1
int function_with_catchers(int argc) {
25
1
    bool die_again = true;
26
27
    try {
28
1
        function_that_may_throw(argc == 1);
29
2
    } catch (std::exception&) {
30
1
        die_again = false;
31
    }
32
33

2
    RAII raii(die_again);
34
35
    try {
36
1
        raii.method_that_may_throw();
37
    } catch (std::exception&) {
38
        return 1;
39
    }
40
41
1
    function_that_may_throw(argc != 1);
42
43
1
    return 0;
44
}
45
46
47
1
int main(int argc, char* argv[]) {
48
1
    return function_with_catchers(argc);
49
}