mojo icon indicating copy to clipboard operation
mojo copied to clipboard

Lack of submodule information in Mojo::Exception trace

Open andrew-grechkin opened this issue 3 years ago • 1 comments

Perl (v5.36.0, linux) Mojolicious (9.26, Waffle)

  • Operating system: Arch Linux

Steps to reproduce the behavior

Script to compare Mojo::Exception trace with croak trace

#!/usr/bin/env perl

use v5.36;
use Carp;
use Mojo::Exception qw(check raise);

sub mojo_exception() {
    eval {
        raise 'MyApp::X', 'exception: raise';
    } or check $@ => [
        default => sub { say $_->verbose(1) },
    ];
}

sub carp_croak() {
    eval {
        croak 'exception: croak';
    } or check $@ => [
        default => sub { say $_ },
    ];
}

sub main() {
    mojo_exception();
    carp_croak();
    return 0;
}

exit main();

result:

exception: raise at /home/agrechkin/tmp/test-exception line 9.
Traceback (most recent call first):
  File "/home/agrechkin/tmp/test-exception", line 9, in "main"
  File "/home/agrechkin/tmp/test-exception", line 12, in "main"
  File "/home/agrechkin/tmp/test-exception", line 24, in "main"
  File "/home/agrechkin/tmp/test-exception", line 29, in "main"

exception: croak at /home/agrechkin/tmp/test-exception line 17.
        eval {...} called at /home/agrechkin/tmp/test-exception line 20
        main::carp_croak() called at /home/agrechkin/tmp/test-exception line 25
        main::main() called at /home/agrechkin/tmp/test-exception line 29

Expected behavior

trace should print submodule names, not just package names, similar to croak. not: main, main, main but: main::main(), main::mojo_excteption(), main::ANON / eval

Actual behavior

trace prints package names for each frame

andrew-grechkin avatar Jun 29 '22 21:06 andrew-grechkin

Feel free to make suggestions for how to make the trace still look nice with more information.

kraih avatar Jun 29 '22 21:06 kraih