Changeset 24324 for lang/perl/MENTA/trunk
- Timestamp:
- 11/19/08 21:07:36 (4 years ago)
- Files:
-
- 1 modified
-
lang/perl/MENTA/trunk/lib/MENTA.pm (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/MENTA/trunk/lib/MENTA.pm
r24294 r24324 36 36 37 37 # エラー発生時にスタックトレースを出すための処理 38 my $errinfo; 38 39 local $SIG{__DIE__} = sub { 39 my $msg = shift;40 my ($msg, ) = @_; 40 41 warn $msg unless ref $msg; 41 42 return $msg if ref $msg && ref $msg eq 'HASH' && $msg->{finished}; … … 75 76 $i++; 76 77 } 77 die { message => $msg, trace => \@trace }; 78 $errinfo = { message => $msg, trace => \@trace }; 79 die @_; 78 80 }; 79 81 80 82 # 例外をまっこうからうけとめる 83 local $@; 81 84 eval { 82 85 my $path = $ENV{PATH_INFO} || '/'; … … 130 133 die "${path} を処理する方法がわかりません"; 131 134 } 135 136 undef $errinfo; 132 137 }; 133 138 # 発生した例外をすかさず処理する 134 if ( my $err = $@) {135 die "エラー処理失敗: ${err }" unless ref $erreq 'HASH';136 return if $err ->{finished};137 138 warn $err ->{message};139 if ($errinfo) { 140 die "エラー処理失敗: ${errinfo}" unless ref $errinfo eq 'HASH'; 141 return if $errinfo->{finished}; 142 143 warn $errinfo->{message}; 139 144 140 145 print "Status: 500\r\n"; … … 144 149 my $body = do { 145 150 if ($config->{menta}->{kcatch_mode}) { 146 my $msg = escape_html($err ->{message});151 my $msg = escape_html($errinfo->{message}); 147 152 chomp $msg; 148 153 my $out = qq{<!doctype html><head><title>500 Internal Server Error</title><style type="text/css">body { margin: 0; padding: 0; background: rgb(230, 230, 230); color: rgb(44, 44, 44); } h1 { margin: 0 0 .5em; padding: .25em .5em .1em 1.5em; border-bottom: thick solid rgb(0, 0, 15); background: rgb(63, 63, 63); color: rgb(239, 239, 239); font-size: x-large; } p { margin: .5em 1em; } li { font-size: small; } pre { background: rgb(255, 239, 239); color: rgb(47, 47, 47); font-size: medium; } pre code strong { color: rgb(0, 0, 0); background: rgb(255, 143, 143); } p.f { text-align: right; font-size: xx-small; } p.f span { font-size: medium; }</style></head><h1>500 Internal Server Error</h1><p>${msg}</p><ol>}; 149 for my $stack (@{$err ->{trace}}) {154 for my $stack (@{$errinfo->{trace}}) { 150 155 $out .= '<li>' . escape_html(join(', ', $stack->{package}, $stack->{filename}, $stack->{line})) 151 156 . qq(<pre><code>$stack->{context}</code></pre></li>);
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)