Enviar pesquisa
Carregar
Error.pmの簡単な紹介
•
2 gostaram
•
1,556 visualizações
B
bingo_nakanishi
Seguir
Vista de apresentação de diapositivos
Denunciar
Compartilhar
Vista de apresentação de diapositivos
Denunciar
Compartilhar
1 de 43
Baixar agora
Baixar para ler offline
Recomendados
CAPとBASEとEventually Consistent
CAPとBASEとEventually Consistent
Yohei Yamamoto
1000speakers-sendai
1000speakers-sendai
勝信 今井
GLT#13 Naruhiko Ogasawara
GLT#13 Naruhiko Ogasawara
Naruhiko Ogasawara
331 Ch
331 Ch
anjaan
MSICC
MSICC
Masaki Komagata
Audacity
Audacity
Boonlert Aroonpiboon
Web Refactoring
Web Refactoring
Jace Ju
PHP 防駭 - 基礎觀念篇
PHP 防駭 - 基礎觀念篇
Jace Ju
Recomendados
CAPとBASEとEventually Consistent
CAPとBASEとEventually Consistent
Yohei Yamamoto
1000speakers-sendai
1000speakers-sendai
勝信 今井
GLT#13 Naruhiko Ogasawara
GLT#13 Naruhiko Ogasawara
Naruhiko Ogasawara
331 Ch
331 Ch
anjaan
MSICC
MSICC
Masaki Komagata
Audacity
Audacity
Boonlert Aroonpiboon
Web Refactoring
Web Refactoring
Jace Ju
PHP 防駭 - 基礎觀念篇
PHP 防駭 - 基礎觀念篇
Jace Ju
Talk In Point Of Gc Once In While
Talk In Point Of Gc Once In While
Narihiro Nakamura
通用 web 开发技术体系介绍
通用 web 开发技术体系介绍
zhyq0826
本当は怖いObjectSpace.each_object
本当は怖いObjectSpace.each_object
Narihiro Nakamura
CSS 排版 - 基礎觀念篇
CSS 排版 - 基礎觀念篇
Jace Ju
Betacamp4.选秀
Betacamp4.选秀
zhu02
Betacamp4.选秀
Betacamp4.选秀
rippleye
What is PHP Frameworks?
What is PHP Frameworks?
Masaki Komagata
WebアプリケーションフレームワークMojoの紹介
WebアプリケーションフレームワークMojoの紹介
Yuki Kimoto
Meconomy –Ch3,4
Meconomy –Ch3,4
jeong son
okyuu.com x OpenID
okyuu.com x OpenID
Fumikazu FUJIWARA
WebDAV as Web API
WebDAV as Web API
Masaki Komagata
BRXbox
BRXbox
knksmart
クロスレビュー
クロスレビュー
武 河野
RDF and FOAF
RDF and FOAF
Masaki Komagata
Web技術勉強会10回目(Slideshare用)
Web技術勉強会10回目(Slideshare用)
龍一 田中
Future Of TV
Future Of TV
Daisuke Inoue
山行記録共有データベース「ヤマレコ」
山行記録共有データベース「ヤマレコ」
Kazumine Matoba
Eenadu Promoters Pledging Mar 19, 2009
Eenadu Promoters Pledging Mar 19, 2009
Jagannadham Thunuguntla
動画圧縮のしくみ
動画圧縮のしくみ
Ryo Amano
錯覺
錯覺
Jaing Lai
Mais conteúdo relacionado
Mais procurados
Talk In Point Of Gc Once In While
Talk In Point Of Gc Once In While
Narihiro Nakamura
通用 web 开发技术体系介绍
通用 web 开发技术体系介绍
zhyq0826
本当は怖いObjectSpace.each_object
本当は怖いObjectSpace.each_object
Narihiro Nakamura
CSS 排版 - 基礎觀念篇
CSS 排版 - 基礎觀念篇
Jace Ju
Betacamp4.选秀
Betacamp4.选秀
zhu02
Betacamp4.选秀
Betacamp4.选秀
rippleye
What is PHP Frameworks?
What is PHP Frameworks?
Masaki Komagata
WebアプリケーションフレームワークMojoの紹介
WebアプリケーションフレームワークMojoの紹介
Yuki Kimoto
Meconomy –Ch3,4
Meconomy –Ch3,4
jeong son
okyuu.com x OpenID
okyuu.com x OpenID
Fumikazu FUJIWARA
WebDAV as Web API
WebDAV as Web API
Masaki Komagata
BRXbox
BRXbox
knksmart
クロスレビュー
クロスレビュー
武 河野
RDF and FOAF
RDF and FOAF
Masaki Komagata
Web技術勉強会10回目(Slideshare用)
Web技術勉強会10回目(Slideshare用)
龍一 田中
Future Of TV
Future Of TV
Daisuke Inoue
山行記録共有データベース「ヤマレコ」
山行記録共有データベース「ヤマレコ」
Kazumine Matoba
Eenadu Promoters Pledging Mar 19, 2009
Eenadu Promoters Pledging Mar 19, 2009
Jagannadham Thunuguntla
動画圧縮のしくみ
動画圧縮のしくみ
Ryo Amano
錯覺
錯覺
Jaing Lai
Mais procurados
(20)
Talk In Point Of Gc Once In While
Talk In Point Of Gc Once In While
通用 web 开发技术体系介绍
通用 web 开发技术体系介绍
本当は怖いObjectSpace.each_object
本当は怖いObjectSpace.each_object
CSS 排版 - 基礎觀念篇
CSS 排版 - 基礎觀念篇
Betacamp4.选秀
Betacamp4.选秀
Betacamp4.选秀
Betacamp4.选秀
What is PHP Frameworks?
What is PHP Frameworks?
WebアプリケーションフレームワークMojoの紹介
WebアプリケーションフレームワークMojoの紹介
Meconomy –Ch3,4
Meconomy –Ch3,4
okyuu.com x OpenID
okyuu.com x OpenID
WebDAV as Web API
WebDAV as Web API
BRXbox
BRXbox
クロスレビュー
クロスレビュー
RDF and FOAF
RDF and FOAF
Web技術勉強会10回目(Slideshare用)
Web技術勉強会10回目(Slideshare用)
Future Of TV
Future Of TV
山行記録共有データベース「ヤマレコ」
山行記録共有データベース「ヤマレコ」
Eenadu Promoters Pledging Mar 19, 2009
Eenadu Promoters Pledging Mar 19, 2009
動画圧縮のしくみ
動画圧縮のしくみ
錯覺
錯覺
Error.pmの簡単な紹介
1.
Error.pmの簡単な紹介
ビンゴ中西 1
2.
エラーについて、考えて見ましょう
2
3.
まず、bashで、 cat b.txt とすることを考えよう。
3
4.
ファイルがないところで cat b.txt すると・・・
4
5.
〔結果〕 cat: b.txt: No
such file or directory 5
6.
ファイルがないと怒られてしまった。
6
7.
Perlで同じように ファイルを open してみることを考える
7
8.
open my $FILE,
'<', 'b.txt'; 8
9.
〔結果〕
9
10.
何も表示されない
10
11.
これでは、よくないので、 die してみる。
11
12.
open my $FILE,
“b.txt” or die “ファイルがないっす”; 12
13.
〔結果〕 ファイルがないっす at hoge.pl
line 1 13
14.
これで、エラーの原因を表示して、 プログラムを終了(die)させることは できた。
14
15.
でも、 エラーの原因をログに書き出したい! データベースにも登録したい!
15
16.
また、 ファイルがないくらいでは、 処理を続行してほしい!
16
17.
そこで、Error.pm
17
18.
use Error qw(:try); try
{ open my $FILE, “b.txt” or die “ファイルがないっす”; } otherwise { my $e = shift; print $e; }; print “プログラムは続行可能!!” . “n”; 18
19.
〔結果〕
ファイルがないっす。 at hoge.pl line 4. プログラムは続行可能!! 19
20.
Error.pmを使わないで、 次のように書くと・・・
20
21.
open my $FILE,
“b.txt” or die “ファイルがないっす”; print “プログラムは続行可能!!” . “n”; 21
22.
〔結果〕 ファイルがないっす at hoge.pl
line1. 22
23.
このように、Perlは即死んでしまう。
23
24.
どういうことか? Error.pmはなにをしてくれるのか?
24
25.
〔説明〕 tryで囲った中でのdieは 捕捉されて、
dieした瞬間に otherwise句の中に処理が移る。 25
26.
otherwiseの中では、 my $e =
shift; としてやることで、 $eに、 dieの内容(今回は,”ファイルがないっす”) をもらうことできる。 26
27.
だから、 otherwise句の中に、
・ログへの書き出し ・データベースに登録 といった処理を書いてやればよい。 27
28.
さらに、 othewise句を抜けたあとは、 プログラムは死なず、 処理をつづけることができる。
28
29.
ソースを見ながらでないと、 わかりにくいので・・・
29
30.
再掲
30
31.
use Error qw(:try); try
{ open my $FILE, “b.txt” or die “ファイルがないっす”; } otherwise { my $e = shift; print $e; }; print “プログラムは続行可能!!” . “n”; 31
32.
では、もう少し、 Error.pm を見てみましょう。
32
33.
関数の中で die していても
try で囲っていれば、 プログラムを死なせることはありません。 33
34.
sub bad_sub {
open my $FILE, “b.txt” or die “ファイルがないっす”; } 34
35.
try {
bad_sub(); } otherwise { my $e = shift; print “ここで表示! “ . “$e”; }; print “プログラムは続行可能!” . “n”; 35
36.
もう少し、複雑な要求に関して
36
37.
SQLに失敗したときはロールバックしたい! ファイルのオープンに失敗したときは ログに書き出したい!
37
38.
オリジナルの例外を作りましょう。 これで、どこかの言語みたいになるぞ!
38
39.
my_SQLException.pm package my_SQLException; use base
qw/Error::Simple/; use overload '””' => sub { shift->stacktrace }; 39
40.
use Error qw(:try); use
my_SQLException; try{ my_select() or my_SQLException->throw(“SQL失敗”); open_file() or my_IOException->throw(“ファイル失敗”); } catch my_SQLException with { # ロールバック; } catch my_IOException with { # ログへの書き出し; }; # 処理を続行; 40
41.
catch で 例外ごとに 処理を分けることができます。 スイッチ文みたいなものと考えると わかりやすい。 otherwiseはどのcatchにも 該当がないときに処理される。
41
42.
最後に、注意。 try { }
otherwise { }; というように最後に セミコロンを入れるのを、 忘れないようにしてください。 42
43.
ご清聴ありがとうございました
43
Baixar agora