我应该如何处理Perl模块内部或外部的错误?

时间:2010-10-08 03:33:27

标签: perl error-handling perl-module

我开始学习如何使用perltoot

在perl中创建模块
 package Person;
 use strict;

 my($NAME, $AGE, $PEERS) = ( 0 .. 2 );

 sub new {
    my $self = [];
    $self->[$NAME] = undef;
    $self->[$AGE] = undef;
    $self->[$PEERS] = [];
    bless($self);
    return $self;
 }

 sub name {
    my $self = shift;
    if (@_) { $self->[$NAME] = shift }
    return $self->[$NAME];
 }

 sub age {
    my $self = shift;
    if (@_) { $self->[$AGE] = shift }
    return $self->[$AGE];
 }

 sub peers {
    my $self = shift;
    if (@_) { @{ $self->[$PEERS] } = @_ }
    return @{ $self->[$PEERS] };
 }

 1;
  • 我想知道如果可能的话 如果我有任何威胁,请使用示例代码 模块内外的错误 它?

例如:

 use Person;
 $test= Person->new() or die Person->Error;

sub new {
   my $self = [];
   $self->[$NAME] = undef;
   $self->[$AGE] = undef;
   $self->[$PEERS] = [];
   bless($self);
   #########
   # some error happened here and I need to say something
   #########
   return $self;
}
  • 如果我打电话给其中的任何其他内容 有错误的模块,问题, 缺少参数如何是正确的 告诉我有错误的方法吗?
PS:希望我的问题不是太过分,大家好。)

1 个答案:

答案 0 :(得分:4)

Carp例程可用于报告错误。

use Carp qw{ croak };

sub new {
    my $self        = {};
    $self->{$NAME } = undef;
    $self->{$AGE  } = undef;
    $self->{$PEERS} = [];

    # replace the following with something appropriate
    if ($error_occurred) {
        croak 'Something did not work right';
    }

    return bless, $self;
}