$dbh = DBI->connect($dsn, $user, $password, { RaiseError => 1 }); "RaiseError" (boolean, inherited) This attribute can be used to force errors to raise exceptions rather than simply return error codes in the normal way. It is "off" by default. When set "on", any method which results in an error will cause the DBI to effectively do a "die("$class $method failed: $DBI::errstr")", where $class is the driver class and $method is the name of the method that failed. E.g., DBD::Oracle::db prepare failed: ... error text here ... If you turn "RaiseError" on then you'd normally turn "PrintError" off. If "PrintError" is also on, then the "PrintError" is done first (naturally). Typically "RaiseError" is used in conjunction with "eval { ... }" to catch the exception that's been thrown and followed by an "if ($@) { ... }" block to handle the caught exception. In that eval block the $DBI::lasth variable can be useful for diagnosis and reporting. For example, $DBI::lasth->{Type} and $DBI::lasth->{Statement}.