die

例外を発生させる

構文

解説

die は例外を発生させ、失敗を示す終了コードを伴って Perl スクリプトを終了します。 そして、その例外は STDERR に出力されます。 例外の内容は LIST に指定します。複数の文字列を指定する場合はカンマ区切りで指定しますが、 例外出力の際にはそれらは連結されます。

my $file = 'dummy.txt';
open my $fh, '<', $file or die "Failed to open a file: ", $file, "\n";

もし eval の中で die が実行されると、 eval は未定義値とともに終了され、その例外は $@ に格納されます。 この場合は、die によって Perl スクリプトは強制的に終了することはありません。

my $file = 'dummy.txt';
eval { open my $fh, '<', $file or die "Failed to open a file: ", $file, "\n"; };
if ($@) {
    print $@;
}

上記の 2 つのコードはいずれも次のように出力されます。

Failed to open a file: dummy.txt

しかし、最後に改行 (\n) を出力しない場合は、エラー箇所を表す行番号が付加されます。

open my $fh, '<', $file or die "Failed to open a file: ", $file;
Failed to open a file: dummy.txt at sample.pl line 16.

もし LIST に何も指定しなかった場合、$@ に何もセットされていなければ次のように出力されます。

Died at sample.pl line 17.

しかし、以前に何かしらの理由で $@ にエラー内容がセットされていた場合は、 改行に加え ...propagated が付加されます。

eval { open my $fh, '<', $file or die "Failed to open a file: ", $file, "\n"; };
if ($@) {
    die;
}
Failed to open a file: dummy.txt
        ...propagated at sample.pl line 14.