繁体   English   中英

我该如何处理死去的perl构造函数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM