簡體   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