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