2
代碼片段:我該如何處理死掉的perl構造函數?
my $tz = DateTime::TimeZone->new(name => 'America/San_Francisco');
這立即死亡,因爲America/San_Francisco
不是recognized timezone。被印刷
以下消息:
時區「美/ San_Francisco」無法加載,或者是無效的名稱。
我想處理此錯誤,並在腳本退出前爲用戶打印其他信息。我嘗試使用unless
,但沒有運氣趕上die
。
這怎麼辦?
這幾乎工作,但給了我一個奇怪的錯誤: '在./test-die.pl線6從https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List一個時區,第1行。' –
'my $ tz; eval {$ tz = ....; 1}或do {if($ @ =〜〜'更安全,'$ @'可能會在一些Perl版本中被破壞,參見[Try :: Tiny](http://p3rl.org/Try::Tiny)和[在5.14之前版本中的bug)(http://www.perlmonks.org/?node_id=1153468) – choroba
@JonathanCross在字符串的末尾添加一個'\ n',以防止包含該位置。 –