ASP4

 view release on metacpan or  search on metacpan

lib/ASP4/Error.pm  view on Meta::CPAN


package ASP4::Error;

use strict;
use warnings 'all';
use ASP4::HTTPContext;
use JSON::XS;


sub new
{
  my $class = shift;
  my ($err_str, %args);
  if( @_ )
  {
    if( @_ == 1 )
    {
      $err_str = shift;
    }
    else
    {
      %args = @_;
    }# end if()
  }
  elsif( $@ )
  {
    $err_str = $@;
  }# end if()
  
  my $context   = ASP4::HTTPContext->current;
  my $Config    = $context->config;
  my $Response  = $context->response;
  my $Session   = $context->session;
  my $Form      = $context->request->Form;
  
  my %session_data = %$Session;
  
  my $error;
  if( $err_str )
  {
    my ($main, $message, $file, $line) = $err_str =~ m/^((.*?)\s(?:at|in)\s(.*?)\sline\s(\d+))/;
    $error = {
      message     => $err_str,
      file        => $file,
      line        => $line,
      stacktrace  => $err_str,
    };
    
    if( $error->{file} =~ m{_asp\.pm$} )
    {
      $error->{file} = -f $ENV{SCRIPT_FILENAME} ? $ENV{SCRIPT_FILENAME} : $error->{file};
    }# end if()
  }
  else
  {
    $error = \%args;
  }# end if()
    
  # Get the line of code that's breaking:
  # And maybe a few before and after:
  my $code;
  if( -f $error->{file} )
  {
    if( open my $ifh, '<', $error->{file} )
    {
      my $max = 0;
      $max++ while <$ifh>;

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 0.586 second using v1.00-cache-2.02-grep-82fe00e-cpan-eb20b53101e )