PR
 
関数順 インデックス
目的別 インデックス

構文
 
 die エラー文字列

返り値
 
 なし

説明

  • エラー文字列の値を標準エラー出力に出力し,ステータス・コード$!でプログラムを終了します。
  • エラー文字列を省略すると$@が代わりに使われます。$@に値がない場合は'Died'が代わりに使われます。
  • evalの内側で使用すると,プログラムは終了せずその場でevalが終了します。この時標準エラー出力にメッセージは出力されず,メッセージは$@にセットされます。

使用例

ファイルdummyfileの内容を表示する。ファイルが開けない場合,エラー終了する
#!/usr/bin/perl
use strict;
use warnings;

my $filename = 'dummyfile';
open my $fh, "<", $filename or die "$!:$filename";
print <$fh>;
close $fh;
ファイルdummyfileの内容を表示する。ファイルが開けない場合、自分でエラー処理を行う
#!/usr/bin/perl
use strict;
use warnings;

eval {
  my $filename = 'dummyfile';
  open my $fh, "<", $filename or die "$!:$filename";
  print <$fh>;
  close $fh;
};
if ($@) {
  print "Error!\n";
  print $@;
  exit 1;
}
exit 0;
ファイルdummyfileの内容を表示する。ファイルが開けない場合、エラー終了する(Carp::confessを使用してスタック・トレース付きのエラーを発生させる)
#!/usr/bin/perl
use strict;
use warnings;
use Carp;

my $filename = 'dummyfile';
show_file($filename);

sub show_file {
  my $filename = shift;
  
  open my $fh, "<", $filename or confess "$!:$filename";
  print <$fh>;
  close $fh;
}
※dieの代わりにCarp::confessでスタック・トレース付きのエラーを発生させることができます。

ファイルdummyfileの内容を表示する。ファイルが開けない場合,例外を発生させる。その後例外をキャッチして例外処理を行う
#!/usr/bin/perl
use strict;
use warnings;
use Exception::Class;

eval {
  my $filename = 'dummyfile';
  open my $fh, "<", $filename or Exception::Class
::Base->throw(error => $filename); print <$fh>; close $fh; }; if (my $e = Exception::Class->caught()) { if (ref $e) { printf "Error! package[%s] file[%s] line[%d]\n", $e->package, $e->file, $e->line; } else { print $@; } exit 1; } exit 0;
※例外処理を行う場合、Exception::Classを使うとより詳しい情報を収集することができます。