代码之家  ›  专栏  ›  技术社区  ›  chollida

如何在没有位置信息的情况下输出die()消息?

  •  30
  • chollida  · 技术社区  · 16 年前

    die . 当我捕捉到异常时,我希望输出不附带位置信息的消息。

    此脚本:

    #! /usr/bin/perl -w
    
    use strict;
    
    eval {
        die "My error message";
    };
    if($@) {
        print $@;
    }
    

    My error message at d:\src\test.pl line 7.

    我只希望得到输出: My error message

    希望人们不会关注我为什么要这么做,但如果有人感兴趣:

    3 回复  |  直到 16 年前
        1
  •  58
  •   toolic    16 年前

    添加 \n 到您的字符串:

    die "My error message\n"
    

    die

    如果列表的最后一个元素没有 行号和输入行号(如果有

        2
  •  19
  •   Medlock Perlman    11 年前

    Mastering Perl 这就是讨论这个问题的原因。虽然只需在邮件末尾加上新行,就可以消除文件和行号,但也可以 die 参考:

    eval {
        time % 2 ?
            die { 
                message => q(I died!),
                level   => 'really really serious',
                }
            :
            die "I died as a string!\n";
        };
    
    if( ref $@ ) {
        print "Reference message was $@->{message}\n";
        }
    else {
        print "$@\n";
        }
    

    我不喜欢错误消息末尾的换行符,虽然我还没有看到您的代码,但这听起来像是我想向异常添加额外信息以便跟踪发生了什么。

    您也可以考虑在CPAN上使用许多异常模块之一。

        3
  •  3
  •   brian d foy    16 年前

    有关详细信息,请参阅perlfunc条目 die 所有额外的信息。并以 \n .