使用Ensembl Perl API,有一个load_registry_from_db
函数连接到SQL服务器。据说它会引发连接超时的异常。
$registry->load_registry_from_db(
-host => 'ensembldb.ensembl.org',
-user => 'anonymous',
-verbose => '1'
);
异常:如果无法连接给定的MySQL数据库,则抛出该异常 或者在查询数据库时出现任何错误。
我想知道如何通过Perl捕获该异常?它写在eval
是最好的页面上。那是eval {$registry}
吗?
答案 0 :(得分:2)
您绝对可以使用eval:
my $statement_ok = eval {
$registry->load_registry_from_db(
-host => 'ensembldb.ensembl.org',
-user => 'anonymous',
-verbose => '1'
);
1;
};
if (! $statement_ok){
# handle error
do_something() if $@ =~ /.../;
}
我更喜欢这样做的原因是其他东西可能有或可能破坏$@
,所以使用true语句将确保即使已经设置了$@
,你也确定在该代码中捕获了特定的异常。
基本上,如果调用没有抛出,$statement_ok
将为真。
你也可以使用Try::Tiny这样的外部库,但我必须承认,我从来没有使用过这样的东西,我总是坚持使用eval
。