Используйте конфигурацию RaiseError=>1
в DBI->connect
и оберните ваши вызовы в $dbh
и $sth
в блоке try ( TryCatch и Try :: Tiny являются хорошими реализациями для блоков try).
См. документы для получения дополнительной информации о других доступных переменных подключения.
например:
use strict;
use warnings;
use DBI;
use Try::Tiny;
my $dbh = DBI->connect(
$your_dsn_here,
$user,
$password,
{
PrintError => 0,
PrintWarn => 1,
RaiseError => 1,
AutoCommit => 1,
}
);
try
{
# deliberate typo in query here
my $data = $dbh->selectall_arrayref('SOHW TABLES', {});
}
catch
{
warn "got dbi error: $_";
};