Line | Branch | Condition | Exec | Source | Block IDs |
---|---|---|---|---|---|
1 | #include <stdexcept> | ||||
2 | |||||
3 | 3 | int function_that_may_throw(bool die) { | |||
4 |
2/2✓ Branch 0 (2→3) taken 1 times.
✓ Branch 1 (2→6) taken 2 times.
|
2/2✓ Fully covered.
|
3 | if (die) { | 2 |
5 |
1/2✓ Branch 0 (4→5) taken 1 times.
✗ Branch 1 (4→8) not taken.
|
1 | throw std::runtime_error("the error"); | 3, 4, 5, 8 | |
6 | } else { | ||||
7 | 2 | return 42; | 6, 7 | ||
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); | 2, 3 | ||
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/2✗ Branch 0 (2→3) not taken.
✓ Branch 1 (2→10) taken 1 times.
|
1 | function_that_may_throw(argc == 1); | 2 | |
29 |
1/2✗ Branch 0 (10→11) not taken.
✓ Branch 1 (10→12) taken 1 times.
|
1 | } catch (std::exception&) { | 10, 12 | |
30 | 1 | die_again = false; | |||
31 | 1 | } | 13 | ||
32 | |||||
33 | // GCOV_EXCL_START | ||||
34 | − | RAII raii(die_again); | 3 | ||
35 | // GCOV_EXCL_STOP | ||||
36 | |||||
37 | try { | ||||
38 |
1/2✓ Branch 0 (4→5) taken 1 times.
✗ Branch 1 (4→14) not taken.
|
1 | raii.method_that_may_throw(); | 4 | |
39 | ✗ | } catch (std::exception&) { | 14, 16 | ||
40 | ✗ | return 1; | |||
41 | ✗ | } | 17 | ||
42 | |||||
43 |
1/2✓ Branch 0 (5→6) taken 1 times.
✗ Branch 1 (5→18) not taken.
|
1 | function_that_may_throw(argc != 1); | 5 | |
44 | |||||
45 | 1 | return 0; | 6 | ||
46 | 1 | } | 7, 18 | ||
47 | |||||
48 | |||||
49 | 1 | int main(int argc, char* argv[]) { | |||
50 | 1 | return function_with_catchers(argc); | 2, 3 | ||
51 | } | ||||
52 |