Brandon Allbery <allber...@gmail.com> wrote: > Two issues: > > (1) all standard exceptions are in or under the X:: namespace. > > (2) .WHAT doesn't show names with their namespaces, whereas .^name does. > > pyanfar Z$ 6 'my $r = 4/0; say $r; CATCH {default {say .^name}}' > X::Numeric::DivideByZero
Thanks. I didn't get that the behavior of WHAT and ^name were that different. > On Mon, Oct 29, 2018 at 1:04 PM Joseph Brenner <doom...@gmail.com> wrote: > >> I was just looking into doing some finer-grained exception handling, >> so I tried this: >> >> use v6; >> try { >> my $result = 4/0; >> say "result: $result"; >> CATCH { >> # when DivideByZero { say "Oh, you know."; } >> default { say .WHAT; .Str.say } # (DivideByZero) Attempt >> to divide 4 by zero using div >> } >> } >> >> The first time through, The .WHAT tells me I've got >> "DivideByZero", and so I added the line that's commented out >> here, at which point I got the error: >> >> ===SORRY!=== >> Function 'DivideByZero' needs parens to avoid gobbling block (or >> perhaps it's a class that's not declared or available in this scope?) >> >> Putting parens around (DivideByZero) doesn't help: >> >> Undeclared name: >> DivideByZero used at line 12 >> >> My impression was this would just work from looking >> at the examples using things like X::AdHoc here: >> >> https://docs.perl6.org/language/exceptions >> > > > -- > brandon s allbery kf8nh > allber...@gmail.com >