WEKO3
-
RootNode
アイテム
Beautiful Error Handling
https://ipsj.ixsq.nii.ac.jp/records/95398
https://ipsj.ixsq.nii.ac.jp/records/95398718dbc8b-e677-4d3d-9d21-f9d216a543b6
名前 / ファイル | ライセンス | アクション |
---|---|---|
![]() |
Copyright (c) 2012 by the Information Processing Society of Japan
|
|
オープンアクセス |
Item type | Symposium(1) | |||||||
---|---|---|---|---|---|---|---|---|
公開日 | 2013-01-11 | |||||||
タイトル | ||||||||
タイトル | Beautiful Error Handling | |||||||
タイトル | ||||||||
言語 | en | |||||||
タイトル | Beautiful Error Handling | |||||||
言語 | ||||||||
言語 | jpn | |||||||
キーワード | ||||||||
主題Scheme | Other | |||||||
主題 | セッション1 | |||||||
資源タイプ | ||||||||
資源タイプ識別子 | http://purl.org/coar/resource_type/c_5794 | |||||||
資源タイプ | conference paper | |||||||
著者所属 | ||||||||
株式会社Preferred Infrastracture | ||||||||
著者所属(英) | ||||||||
en | ||||||||
Preferred Infrastructure | ||||||||
著者名 |
田中, 英行
× 田中, 英行
|
|||||||
著者名(英) |
Hideyuki, Tanaka
× Hideyuki, Tanaka
|
|||||||
論文抄録 | ||||||||
内容記述タイプ | Other | |||||||
内容記述 | 今日に於いても、プログラマにとってエラーハンドリングは頭の痛い問題である。正しいエラーハンドリングを行うことは、堅牢なソフトウェアを構築する上で大変重要な問題であるが、適切な抽象化が行われてきたとは言い難い状況にある。現在広く用いられている手法としては、古くからのエラーコードによるものと、例外によるものがある。エラーコードによる手法には大きく2つの問題がある。エラー処理のためのコードがコードのあらゆる部分に組み込まれ、コードの見通しが非常に悪くなることと、エラーを無視するのが非常に容易なので、予期せぬエラー処理漏れを犯しやすいことである。一方で例外を用いる方法は、正しいリソース管理とともに用いられる必要がある。メモリの管理をGCに任せた場合でも、GCの管轄外のリソースは正しく処理されないといけない。これを怠れば、多くの場合深刻なバグを引き起こすことになる。このような処理をもれなく記述すると、往々にして例外捕捉のために深いネストが必要となる。例外処理を正しく行うには、例外の正しい伝搬も必要であるが、これをきちんと行うのはかなり面倒なため、いわゆる例外の握りつぶしが横行する結果となるケースも少なくない。いずれの方法でも、エラーを正しく処理できているかどうかは簡単には推論できない。コードをじっくり観察する必要がある。かくして現代のプログラマは、退屈で面倒な、容易に間違いを犯し得る、そして何より「美しく」ないコードを神経をすり減らしながら書かなければならない状況にあり、また、ともすればそれを良しとする風潮すら見受けられる。しかしながらそれは解決できる問題であり、単にプログラミングモデルからくる制限に他ならないと考える。本発表では、モナドによってエラー処理の抽象化を行うための手法を紹介する。それとともにエラー処理に欠くことのできない、リソース管理の抽象化もあわせて紹介する。モナドを用いて、例外処理のための雑多のコードを、いわゆる「モナドの床下配線」によって隠蔽する方法を、実際のHaskellにおける応用例とともに見てゆく。それにより、エラーの通知側とそれを受け取って処理する側が完全に分離され、用途にマッチしたエラーハンドリングを自由に記述できるようになる。最終的に、正しいエラーハンドリングを美しく行えることを示す。 | |||||||
書誌情報 |
夏のプログラミング・シンポジウム2012「ビューティフルコード」報告集 p. 17-26, 発行日 2013-01-11 |
|||||||
出版者 | ||||||||
言語 | ja | |||||||
出版者 | 情報処理学会 |