File Coverage

/usr/local/lib/perl5/site_perl/5.26.1/x86_64-linux/XS/Framework.x/i/xs/catch.h
Criterion Covered Total %
statement 2 2 100.0
branch 9 90 10.0
condition n/a
subroutine n/a
pod n/a
total 11 92 11.9


line stmt bran cond sub pod time code
1             #pragma once
2             #include
3             #include
4              
5             namespace xs {
6              
7             using CatchHandlerSimple = std::function;
8             using CatchHandler = std::function;
9              
10             void add_catch_handler (CatchHandlerSimple f);
11             void add_catch_handler (CatchHandler f);
12              
13             Sv _exc2sv (pTHX_ const Sub&);
14              
15 703           template static inline auto throw_guard (pTHX_ CV* context, F&& f) -> decltype(f()) {
16             SV* exc;
17 703 50         try { return f(); }
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
18             catch (...) {
19             auto tmp = xs::_exc2sv(aTHX_ context);
20             if (tmp) exc = tmp.detach();
21             else exc = newSVpvs("");
22             }
23             croak_sv(sv_2mortal(exc));
24             }
25              
26             }