To clarify a bit: `run` doesn't throw exceptions. It returns a Proc object, which throws when it's sunk if the exit code is non-zero. In this case, the issue is the killed processes have 0 as their exit code:
$ perl6 -e 'run("perl", "-e", q{kill SEGV => $$}).exitcode.say'
0