[英]How can I handle a perl constructor that dies?
程式码片段:
my $tz = DateTime::TimeZone->new(name => 'America/San_Francisco');
这立即消失,因为America/San_Francisco
不是公认的时区 。
将显示以下消息:
无法加载时区“ America / San_Francisco”,或者它是无效的名称。
我想处理此错误并在脚本退出之前为用户打印其他信息。 我试过用unless
,但没有运气能die
。
如何才能做到这一点?
使用eval { ... }
和$@
来捕获和管理致命错误。
my $tz = eval { DateTime::TimeZone->new(name => 'America/San_Francisco') };
if (!$tz) {
if ($@ =~ /The timezone .* could not be loaded/) {
warn "Choose a timezone from ",
"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List";
} else {
warn "Error in DateTime::TimeZone constructor: $@";
}
exit 1;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.