14.11 データベースのエラーを処理する

自分のプログラムにおいて、データベースのエラーを捕捉して処理したい。

  • データベースに接続するときに、RaiseErrorを有効にし、データベースに対する呼び出しをevalブロックの中に書く。
$dbh = DBI->connect($DSN, $user, $password, { RaiseError => 1 });

eval {
  $dbh->do($SQL);
  $sth = $dbh->prepare($SQL2);
  $sth->execute();
  while (@row = $sth->fetchrow_array) {
    # ...
  }
};

if ($@) { 
  # $DBI::lasth->errstrを使用してエラーメッセージを取得し、
  # エラーから回復するためのコードをこの部分に書く。
}