Sku*_*ner 0 linux perl daemon exception-handling
我有一个简单的Perl脚本,它使用无限循环作为Linux守护进程运行.它每10秒连接一个数据库以执行一个进程.
while (1)
{
# THIS LINE WILL KILL THE SCRIPT IF IT FAILS
my $DB=DBI->connect("dbi:Sybase:server=myserver","user","password");
. . . do something . . .
sleep (10);
}
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
试图以10秒的间隔连接,而不是每隔10秒,如William Pursell所说:
while (1)
{
# THIS LINE WILL KILL THE SCRIPT IF IT FAILS
my $DB;
eval {
$DB = DBI->connect("dbi:Sybase:server=myserver","user","password");
};
if ( my $ex = $@ ) {
warn $ex;
next;
}
# do something with $DB
continue {
sleep 10;
}
}
Run Code Online (Sandbox Code Playgroud)
另请参阅Perl中的面向对象异常处理,值得吗?和我怎样才能干净地处理错误在Perl检查?
我有点不解:
my $DB=DBI->connect("dbi:Sybase:server=myserver","user","password");
Run Code Online (Sandbox Code Playgroud)
如果无法连接,通常不应该死.通常它应该返回错误代码而不是db-handle.只有在使用RaisError时才会死/抛出异常.
my $DB=DBI->connect("dbi:Sybase:server=myserver","user","password",
{ RaiseError => 1});
Run Code Online (Sandbox Code Playgroud)
请参阅DBI手册页
| 归档时间: |
|
| 查看次数: |
532 次 |
| 最近记录: |