Anúncio
Anúncio

Mais conteúdo relacionado

Último(20)

Anúncio

finally (not finally)

  1. finally (not finally) @ytnobody
  2. @ytnobody – わいとん • CEO of Y.pm LLC • Founder of Ooimachi.pm
  3. YAPC::Kyoto 2023 「裏トーク」 引用元 https://blog.yapcjapan.org/entry/2023/03/15/120000
  4. 真新しい話はたぶんないですが。
  5. use v5.34; use experimental qw(try); • v5.34でtry/catchがperlにも来ていた • もう2年前のお話
  6. やってみる
  7. やってみる Ctrl-C
  8. やってみる Ctrl-C 実行されとらんが?
  9. やってみる このループにいる最中で Ctrl-C押されてる
  10. やってみる 一応tryの中だけど?
  11. try/catchはシグナルを処理しない それはそう😌
  12. こうなった
  13. こうなった Ctrl-C
  14. こうなった catch動いた
  15. シグナルを処理するロジックのおかげ (try/catchのおかげではない) Ctrl-C(SIGINT)を 受け取ったときの処理
  16. ところでfinallyをつかうとこうなる
  17. finallyがすること • try/catchの処理後、必ずブロック内のコードを実行する • 何か例外をcatchしても仕事をする。 • ようするに「あと始末」に使いそう。
  18. ところで、try/catch/finally以前は どうしていたのか? • Try::Tinyでよしなにする • eval { … }; if ($@) { … }; と Guard.pmでがんばる
  19. 個人的感想 モジュール作者以外はtry/catch/finally使おう • モジュール作者の場合、どう しても古い環境(Perl 5.12等) で動かされてしまうことを念 頭に置かないといけない。 • そこをサポート外とするのは全 然アリ。 • 画像はMojoliciousのCPAN Testers Matrix • モジュール作らないor新しい Perlを使えるなら、平易な書 き方の方がいい。 引用元 http://matrix.cpantesters.org/?dist=Mojolicious
  20. 個人的感想 finallyとGuard.pmのguardは用途が近そう • ようするに「あと始末」要員 • でも外部モジュールに依存しなくていいので、finally使いたい • guardの場合、コードの見た目の前後関係が逆になりがち • 上から下に読み下したいと思った時に目が滑るかも • before v5.34, finally is not finally, it's a guard object. • finally is not finally っていいたいだけ
  21. 個人的感想 記号が減るのは良い • eval/if($@) と比較して try/catch/finally は… • 覚えることが少ない • 記号が減る • ので、良い。
  22. おまけ • GPT先生に聞いてみた
  23. GPT先生・・・
Anúncio