GCC Code Coverage Report


Directory: .
File: main.cpp
Date: 2025-09-27 21:24:05+00:00
Coverage Exec Excl Total
Lines: 87.5% 21 0 24
Functions: 100.0% 6 0 6
Branches: 50.0% 8 0 16
Conditions: 100.0% 2 0 2

Line Branch Condition Exec Source
1 #include <stdexcept>
2
3 6 int function_that_may_throw(bool die) {
4
2/2
✓ Branch 2 → 3 taken 2 times.
✓ Branch 2 → 6 taken 4 times.
2/2
✓ Fully covered.
6 if (die) {
5
1/2
✓ Branch 4 → 5 taken 2 times.
✗ Branch 4 → 8 not taken.
2 throw std::runtime_error("the error");
6 } else {
7 4 return 42;
8 }
9 }
10
11 struct RAII {
12 bool die;
13
14 RAII(bool);
15 ~RAII();
16 2 int method_that_may_throw() const {
17 2 return function_that_may_throw(die);
18 }
19 };
20
21 2 RAII::RAII(bool die) :die(die) {}
22 2 RAII::~RAII() {}
23
24 2 int function_with_catchers(int argc) {
25 2 bool die_again = true;
26
27 try {
28
1/2
✗ Branch 2 → 3 not taken.
✓ Branch 2 → 10 taken 2 times.
2 function_that_may_throw(argc == 1);
29
1/2
✗ Branch 10 → 11 not taken.
✓ Branch 10 → 12 taken 2 times.
2 } catch (std::exception&) {
30 2 die_again = false;
31 2 }
32
33
1/2
✓ Branch 3 → 4 taken 2 times.
✗ Branch 3 → 20 not taken.
2 RAII raii(die_again);
34
35 try {
36
1/2
✓ Branch 4 → 5 taken 2 times.
✗ Branch 4 → 14 not taken.
2 raii.method_that_may_throw();
37 } catch (std::exception&) {
38 return 1;
39 }
40
41
1/2
✓ Branch 5 → 6 taken 2 times.
✗ Branch 5 → 18 not taken.
2 function_that_may_throw(argc != 1);
42
43 2 return 0;
44 2 }
45
46
47 2 int main(int argc, char* argv[]) {
48 2 return function_with_catchers(argc);
49 }
50