Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
道化師 堂華
PPTX, PDF
8,298 views
エラーハンドリング
エラーハンドリングとはどうあるべきかについての考察。 Boost.勉強会 #3 関西 ( http://kokucheese.com/event/index/4335/ )にて発表。
Technology
◦
Health & Medicine
◦
Read more
2
Save
Share
Embed
Embed presentation
Download
Downloaded 23 times
1
/ 58
2
/ 58
3
/ 58
4
/ 58
5
/ 58
6
/ 58
7
/ 58
8
/ 58
9
/ 58
10
/ 58
11
/ 58
12
/ 58
13
/ 58
14
/ 58
15
/ 58
16
/ 58
Most read
17
/ 58
Most read
18
/ 58
19
/ 58
20
/ 58
21
/ 58
22
/ 58
Most read
23
/ 58
24
/ 58
25
/ 58
26
/ 58
27
/ 58
28
/ 58
29
/ 58
30
/ 58
31
/ 58
32
/ 58
33
/ 58
34
/ 58
35
/ 58
36
/ 58
37
/ 58
38
/ 58
39
/ 58
40
/ 58
41
/ 58
42
/ 58
43
/ 58
44
/ 58
45
/ 58
46
/ 58
47
/ 58
48
/ 58
49
/ 58
50
/ 58
51
/ 58
52
/ 58
53
/ 58
54
/ 58
55
/ 58
56
/ 58
57
/ 58
58
/ 58
More Related Content
PDF
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
PDF
40歳過ぎてもエンジニアでいるためにやっていること
by
onozaty
PDF
基礎線形代数講座
by
SEGADevTech
PDF
例外設計における大罪
by
Takuto Wada
PDF
組み込み関数(intrinsic)によるSIMD入門
by
Norishige Fukushima
PDF
【メタサーベイ】基盤モデル / Foundation Models
by
cvpaper. challenge
PDF
オブジェクト指向できていますか?
by
Moriharu Ohzu
PDF
マルチコアを用いた画像処理
by
Norishige Fukushima
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
40歳過ぎてもエンジニアでいるためにやっていること
by
onozaty
基礎線形代数講座
by
SEGADevTech
例外設計における大罪
by
Takuto Wada
組み込み関数(intrinsic)によるSIMD入門
by
Norishige Fukushima
【メタサーベイ】基盤モデル / Foundation Models
by
cvpaper. challenge
オブジェクト指向できていますか?
by
Moriharu Ohzu
マルチコアを用いた画像処理
by
Norishige Fukushima
What's hot
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
PDF
目grep入門 +解説
by
murachue
PPTX
DockerコンテナでGitを使う
by
Kazuhiro Suga
PPT
Glibc malloc internal
by
Motohiro KOSAKI
PDF
ゼロから始める転移学習
by
Yahoo!デベロッパーネットワーク
PDF
Quine・難解プログラミングについて
by
mametter
PPTX
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
by
Shota Shinogi
PDF
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
by
京大 マイコンクラブ
PDF
ゲーム開発者のための C++11/C++14
by
Ryo Suzuki
PDF
【Unity】 Behavior TreeでAIを作る
by
torisoup
PDF
TLS, HTTP/2演習
by
shigeki_ohtsu
PDF
プログラムを高速化する話
by
京大 マイコンクラブ
PDF
工学系大学4年生のための論文の読み方
by
ychtanaka
PPTX
【LT資料】 Neural Network 素人なんだけど何とかご機嫌取りをしたい
by
Takuji Tahara
PDF
エンジニアから飛んでくるマサカリを受け止める心得
by
Reimi Kuramochi Chiba
PDF
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
by
Preferred Networks
PDF
時系列分析による異常検知入門
by
Yohei Sato
PDF
Riderはいいぞ!
by
UnityTechnologiesJapan002
PDF
Dockerからcontainerdへの移行
by
Kohei Tokunaga
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
by
Yoshifumi Kawai
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
目grep入門 +解説
by
murachue
DockerコンテナでGitを使う
by
Kazuhiro Suga
Glibc malloc internal
by
Motohiro KOSAKI
ゼロから始める転移学習
by
Yahoo!デベロッパーネットワーク
Quine・難解プログラミングについて
by
mametter
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
by
Shota Shinogi
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
by
京大 マイコンクラブ
ゲーム開発者のための C++11/C++14
by
Ryo Suzuki
【Unity】 Behavior TreeでAIを作る
by
torisoup
TLS, HTTP/2演習
by
shigeki_ohtsu
プログラムを高速化する話
by
京大 マイコンクラブ
工学系大学4年生のための論文の読み方
by
ychtanaka
【LT資料】 Neural Network 素人なんだけど何とかご機嫌取りをしたい
by
Takuji Tahara
エンジニアから飛んでくるマサカリを受け止める心得
by
Reimi Kuramochi Chiba
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
by
Preferred Networks
時系列分析による異常検知入門
by
Yohei Sato
Riderはいいぞ!
by
UnityTechnologiesJapan002
Dockerからcontainerdへの移行
by
Kohei Tokunaga
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
by
Yoshifumi Kawai
Viewers also liked
PPTX
C++プログラマの為のセキュリティ入門
by
道化師 堂華
DOCX
Bodlogiin code
by
orgil
PPTX
.NET vNext
by
信之 岩永
PPTX
それっぽく、適当に
by
信之 岩永
PPTX
C#とILとネイティブと
by
信之 岩永
PPTX
C#/.NETがやっていること 第二版
by
信之 岩永
PDF
C#とaop
by
Hiroshi Maekawa
C++プログラマの為のセキュリティ入門
by
道化師 堂華
Bodlogiin code
by
orgil
.NET vNext
by
信之 岩永
それっぽく、適当に
by
信之 岩永
C#とILとネイティブと
by
信之 岩永
C#/.NETがやっていること 第二版
by
信之 岩永
C#とaop
by
Hiroshi Maekawa
Similar to エラーハンドリング
PDF
error handling using expected
by
Akira Takahashi
PPTX
エラーハンドリングモデル考察
by
道化師 堂華
PDF
Doc and Error Handling
by
Akira Takahashi
PDF
Introduction to boost test
by
Kohsuke Yuasa
PPTX
C++ tips1 #include編
by
道化師 堂華
PDF
組み込みでこそC++を使う10の理由
by
kikairoya
PDF
SEH on mingw32
by
kikairoya
PDF
20081120 lt11th ace
by
Masanori Hayashi
PDF
C++コンパイラ GCCとClangからのメッセージをお読みください
by
digitalghost
error handling using expected
by
Akira Takahashi
エラーハンドリングモデル考察
by
道化師 堂華
Doc and Error Handling
by
Akira Takahashi
Introduction to boost test
by
Kohsuke Yuasa
C++ tips1 #include編
by
道化師 堂華
組み込みでこそC++を使う10の理由
by
kikairoya
SEH on mingw32
by
kikairoya
20081120 lt11th ace
by
Masanori Hayashi
C++コンパイラ GCCとClangからのメッセージをお読みください
by
digitalghost
More from 道化師 堂華
PPTX
Reflection with xamarin.forms
by
道化師 堂華
PPTX
独りガラパゴス開発
by
道化師 堂華
PPTX
C++ tips4 cv修飾編
by
道化師 堂華
PPTX
C++ tips 3 カンマ演算子編
by
道化師 堂華
PDF
C++ tips2 インクリメント編
by
道化師 堂華
PPTX
C++0x総復習
by
道化師 堂華
PPTX
マスタリング バベル
by
道化師 堂華
PPTX
並列プログラミング入門!&おさらい!
by
道化師 堂華
PPTX
バグベアード入門
by
道化師 堂華
PPTX
LUCIFERの設計コンセプトと 導入予定の機能紹介
by
道化師 堂華
Reflection with xamarin.forms
by
道化師 堂華
独りガラパゴス開発
by
道化師 堂華
C++ tips4 cv修飾編
by
道化師 堂華
C++ tips 3 カンマ演算子編
by
道化師 堂華
C++ tips2 インクリメント編
by
道化師 堂華
C++0x総復習
by
道化師 堂華
マスタリング バベル
by
道化師 堂華
並列プログラミング入門!&おさらい!
by
道化師 堂華
バグベアード入門
by
道化師 堂華
LUCIFERの設計コンセプトと 導入予定の機能紹介
by
道化師 堂華
Recently uploaded
PDF
流行りに乗っかるClaris FileMaker 〜AI関連機能の紹介〜 by 合同会社イボルブ
by
Evolve LLC.
PPTX
楽々ナレッジベース「楽ナレ」3種比較 - Dify / AWS S3 Vector / Google File Search Tool
by
Kiyohide Yamaguchi
PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #2
by
Tasuku Takahashi
PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #1
by
Tasuku Takahashi
PDF
エンジニアが選ぶべきAIエディタ & Antigravity 活用例@ウェビナー「触ってみてどうだった?Google Antigravity 既存IDEと...
by
NorihiroSunada
PDF
20251210_MultiDevinForEnterprise on Devin 1st Anniv Meetup
by
Masaki Yamakawa
流行りに乗っかるClaris FileMaker 〜AI関連機能の紹介〜 by 合同会社イボルブ
by
Evolve LLC.
楽々ナレッジベース「楽ナレ」3種比較 - Dify / AWS S3 Vector / Google File Search Tool
by
Kiyohide Yamaguchi
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #2
by
Tasuku Takahashi
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #1
by
Tasuku Takahashi
エンジニアが選ぶべきAIエディタ & Antigravity 活用例@ウェビナー「触ってみてどうだった?Google Antigravity 既存IDEと...
by
NorihiroSunada
20251210_MultiDevinForEnterprise on Devin 1st Anniv Meetup
by
Masaki Yamakawa
エラーハンドリング
1.
ヽ( `Д´)ノ 俺の話を聴けぇ!エラーハンドリング
2.
エラーハンドリングBoost.勉強会 #3 関西
( 2010-10-23 )
3.
概要エラーハンドリングの重要性C++でのエラーハンドリングエラーハンドリング設計エラーハンドリング Boost.勉強会 #3
関西3`Д´)ゝ
4.
お断りまたBoostの話じゃありません!エラーハンドリング Boost.勉強会 #3
関西4(´∀`
5.
ここで言うエラーとは?assert や例外も含めた割と広義なエラー文脈によって、多少、指し示す意味の範囲が変化します。エラーハンドリング Boost.勉強会
#3 関西5|`Д´) ・・・。
6.
発表者前科「luciferの設計コンセプトと導入予定の機能紹介」「バグベアード入門」「並列プログラミング 入門!&おさらい!」「マスタリング バベル」エラーハンドリング
Boost.勉強会 #3 関西6
7.
エラーハンドリングの重要性エラーハンドリング
8.
直接的には意味がないエラーハンドリングはプログラムの主目的とは直接関係がないものであり、エラーハンドリングが一切なくともプログラムは正常に動作できないことはありません。いくらエラーハンドリングを頑張っても直接的に主機能の性能がよくなったり機能が増えることはなく、直接的には非常に非生産的。エラーハンドリング Boost.勉強会 #3
関西8アゥ (´Д`;
9.
正常系 < 異常系直接的には意味がないとはいえエラーハンドリングはプログラムに欠かかすことができない要素。よく言われるようにしっかりと作り込まれたプログラムでは通常、「正常系のコード量よりも異常系のコード量が多い」くらい。現実的にはエラーハンドリング(異常系)こそ、プログラムの主体と言えないこともない。エラーハンドリング
Boost.勉強会 #3 関西9キリッ(`・ω・´
10.
エラーが起きるのは当然ハードウェアは経年変化により必ずいつかは物理的に破損する。昨今はネットワーク越しに処理を分散したりするのが当たり前になってきてる。ネットワークを利用すればエラーの発生率は跳ね上がる。将来的には低価格化・高速化の為に演算結果の確実性が若干損なわれたチップが主流になる可能性もある。エラーハンドリング Boost.勉強会 #3
関西10狭い (´Д`;
11.
人間もミスをするユーザー、システム管理者、プログラマはいずれもミスを犯す。エラーハンドリング Boost.勉強会 #3
関西11人間だもの。 (´∀`
12.
エラーは損害をもたらす適切なエラーハンドリングを怠ると、状況によっては 「データ破損」、 「システム破損」に留まらず「人の死傷」、「工場の爆発事故」と言った非常に致命的で甚大な損害さえもたらすことがあります。エラーハンドリング
Boost.勉強会 #3 関西12gkbr (((゚Д゚;)))
13.
一番に利益を得るのはプログラマ始めからしっかりエラーハンドリングをやっておけばプログラムの開発中からリリース後のサポートに至るまで原因不明の問題の惑わされると言った状況が減る。原因調査は手間と時間を喰うものであり、エラーハンドリングに賭けた手間と時間は割に合いやすい。最終的にどのみち実装する必要のあるエラーハンドリングは最初からやっておいたほうがお得。エラーハンドリング Boost.勉強会 #3
関西13(^ω^
14.
エラーハンドリングの重要性直接的には意味がない正常系<異常系エラーが起きるのは当然人間もミスをするエラーは損害をもたらす一番に利益を得るのはプログラマエラーハンドリング Boost.勉強会 #3
関西14キリッ(`・ω・´
15.
C++でのエラーハンドリングエラーハンドリング
16.
assert使用例:エラーハンドリング Boost.勉強会 #3
関西16intget_value(hoge_type * hoge){assert(NULL != hoge); // 絶対に成立するハズの条件を断言(assert)する。 return hoge->value;}
17.
assertバグ検出の為の機能。リリース版ではコンパイル時のオプションで NDEBUG マクロを指定することで除去できるし、除去される。パフォーマンス的に問題になるようなチェックをやってもリリース版には影響しないので、気軽に
assert を挿入できる。リリース版でもチェックするべき内容であれば assert とは別にエラーハンドリングを記述する必要がある。エラーハンドリング Boost.勉強会 #3 関西17
18.
_DEBUG と NDEBUG_DEBUG
マクロはデバッグ版で定義されるマクロで、 NDEBUG マクロはリリース版で定義されるマクロ。assert のようにデバッグ版とリリース版で挙動を変えたい場合はCプリプロセッサのディレクティブでこの二つのマクロの定義状況を条件にC++のコードを切り替えます。assertでチェックしたい内容が簡単な条件式で収まらない場合に、assert同様にデバッグ版のみで動作するチェック用コードを記述できます。エラーハンドリング Boost.勉強会 #3 関西18
19.
assert問題の早期検出に。絶対に成立しなければならないハズの条件を記述するだけ。エラーハンドリング Boost.勉強会 #3
関西19
20.
assertassertで指定される条件式がfalseになるとC++のプログラムはそのassertが記述されているファイル名(__FILE__)と行番号(__LINE__)と条件式とその条件式が成立しなかった旨のメッセージを表示後、強制的に終了します。メッセージの表示形式等は処理系に依存し、一般的にコンソールアプリであればコンソール上に、GUIアプリではポップアップダイアログで表示されます。エラーハンドリング Boost.勉強会 #3
関西20
21.
assertassertの条件式が成立しなかった場合のこのメッセージの表示に落とし穴があり、特にバックグラウンドで動作するプログラムにおいてはプログラマ/ユーザーがアクセスできるハズのないコンテキストでプログラマ/ユーザーの確認待ちをすることがあり、この状況に陥るとただフリーズしてしまったようにも見えます。エラーハンドリング Boost.勉強会 #3
関西21
22.
assertassert の条件式だけでは、その条件式が成立しないことがなぜ駄目なのかなどと言ったことが分かりにくいであろう場合には次のように条件式に説明文を混ぜ込むことで条件式が成立しなかった場合に表示されるメッセージに説明文を挿入することもできます。エラーハンドリング Boost.勉強会
#3 関西22assert("hogeは必ず指定してください。" && NULL!=hoge);
23.
assertassert は通常次のようなマクロと条件式が成立しなかった時にメッセージを表示して終了するだけの極簡単な関数で構成されます。エラーハンドリング Boost.勉強会
#3 関西23#ifdef NDEBUG#define assert(X) ((void)0)#else#define assert(X) assert_body(X, #X, __FILE__, __LINE__)#endif
24.
assertassertは簡単に自作できるので、独自のassertを実装して利用するのもままある話で、関数名、ビルド番号、コンパイル日時(__DATE__ + __TIME__)などをメッセージに付加したり、ログファイルに記録を残したりするのも実用的です。エラーハンドリング
Boost.勉強会 #3 関西24
25.
static assert標準の assert
は実際にそのコードが呼び出されなければ問題を検出できないが、static assert であればコンパイル時に問題を検出可能。特にマクロ絡みやクラステンプレートおよび関数テンプレートの実装などでコンパイル時に問題を検出したくなることがあります。配列の要素数は最低でも一つなければエラーになるという性質を利用。エラーハンドリング Boost.勉強会 #3 関西25int static_assert[(int)(bool)(条件式)];
26.
例外処理使用例:エラーハンドリング Boost.勉強会 #3
関西26intget_value(hoge_type * hoge){ try{ if (NULL == hoge) {throw std::exception(); } return hoge->value; }catch(std::exception) { return 0; }}
27.
例外処理Java なんかと違って C++
は値なら型を問わずなんでもなげられる。※ただし、コピーができない値は除く。throw; で再送出継承元のクラスでも catch できる。operator T() の T では catch できない。気持ち的にはコンセプトのようなもので catch したいけどそれはできない。例外処理の仕組み的にダックタイピングが適してるんだけど・・・エラーハンドリング Boost.勉強会 #3 関西27
28.
例外処理例外仕様は非推奨。共通の例外処理関数ダブルフォールトで terminate();what()標準ライブラリのメッセージは使えたものじゃない。NUL文字終端文字列ならなにを入れてもいいことになってるよ。UTF-8を入れる場合は先頭にUTF-8のBOMを挿入することで、他と区別するといいよ。エラーハンドリング Boost.勉強会
#3 関西28
29.
例外処理what()標準ライブラリのメッセージは使えたものじゃない。NUL文字終端文字列ならなにを入れてもいいことになってます。UTF-8を入れる場合は先頭にUTF-8のBOMを挿入することで、他と区別可能。finaly標準ではないんだけど、事実上 C++ にはfinally
がある。Windows では catch(...) で一般保護違反すらも拾えるけど、 Linuxではシグナルを拾えないよ。例外安全コンストラクタとデストラクタで例外送出する場合の話。エラーハンドリング Boost.勉強会 #3 関西29
30.
Boost系いろいろ Boost 版でも用意してくれてるみたいだから自分で調べてみてください。エラーハンドリング
Boost.勉強会 #3 関西30ごめん! 人(´Д`;
31.
エラー付き戻り値テンプレートDigitalGhostさんのエラー付き戻り値クラステンプレートhttp://d.hatena.ne.jp/DigitalGhost/20090413/1239646614/本来の戻り値の型をラップするクラステンプレートで、本来の戻り値の型の値、あるいはエラー情報としてその他の型の値を呼び出し元に返却できる。エラーハンドリング Boost.勉強会 #3
関西31
32.
trickerr.htrickerr.hはワシが作った!http://tricklib.com/cxx/dagger/trickerr.hエラーハンドリング Boost.勉強会 #3
関西32
33.
trickerr.hエラークラスを throw でき、処理漏れを防ぎやすい。且つ、catch
されなかったからと言って必ずしも異常終了させなくて済む。throw型なので、関数インターフェイス等に縛られない。catch を行うリスナークラスは場面に応じた拡張が可能でエラーハンドリング処理を共通化しやすく、ネストも可能。処理の継続/中断をリスナークラスで制御可能。catchされなかったエラーについてはエラークラス側で制御可能。エラー情報をツリー構造で扱える。エラーハンドリング Boost.勉強会 #3 関西33
34.
trickerr.htrickerr.h最高!これにはもう自画自賛を惜しみません!エラーハンドリング Boost.勉強会 #3
関西34
35.
みんな大好きC++0x!C++0xが嫌いなC++erなんていません!
36.
exception_ptr例外オブジェクトに対するスマートポインタで、catch 句を抜けた後でもこのexception_ptrにより例外オブジェクトを保持できます。current_exception()現在 throw
されてる例外オブジェクトを保持する exception_ptrを取得する。rethrow_exception()引数で渡された exception_ptrが保持している例外オブジェクトを再送出する。make_exception_ptr()引数で渡されたオブジェクトを保持する exception_ptrを返す。エラーハンドリング Boost.勉強会 #3 関西36
37.
nested_exceptionネストされた例外オブジェクトnested_exception::rethrow_nested()ネストの内側の例外オブジェクトを再送出。nested_exception::nested_ptr()ネストの内側の例外オブジェクトを保持する exception_ptrを返す。throw_with_nested()引数で渡されたオブジェクトがnested_exceptionを継承している場合はそのまま、されていない場合は元の型とnested_exceptionの両方を継承している型で例外を送出する。rethrow_if_nested()引数で渡されたオブジェクトがpublicにnested_exceptionを継承している場合にのみそのrethrow_nested()を呼び出します。エラーハンドリング Boost.勉強会
#3 関西37
38.
エラーハンドリング設計エラーハンドリング
39.
エラーの定義そもそもエラーってなに?エラーハンドリング Boost.勉強会 #3
関西39
40.
エラーの定義契約に基づく設計(DbC)的には事前条件・事後条件・不変条件を満たせない場合に発生するのが例外でもそれもある意味事後条件であり、矛盾してない?エラーハンドリング Boost.勉強会 #3
関西40
41.
エラーの定義正常であるとされる状態の影正常ではない状態としか定義できない。エラーハンドリング Boost.勉強会 #3
関西41
42.
エラーの定義エラーの本質隙間に潜むエントロピーが高い。所以にエラー周りを事前に設計しきることは現実的ではない。エラーハンドリング Boost.勉強会 #3
関西42
43.
エラーの検出サブファンクション・他からのエラー通知照合入力チェック処理結果チェックここで言う処理結果は途中経過を含むエラーハンドリング Boost.勉強会 #3
関西43
44.
エラーの通知戻り値グローバル変数assertassertさんは、実際には検出から処理までを一手に担うパッケージ例外処理コールバック関数他メッセージキューログエラーハンドリング Boost.勉強会 #3
関西44
45.
エラーの処理通知・記録呼び出し元へ最終的には人への通知プログラマ管理者ユーザー問題解決再試行別案・次善策中断無視エラーハンドリング Boost.勉強会 #3
関西45
46.
自動伝播と隔壁例外処理機構によって送出された例外は捕捉されるまで呼び出し元を遡っていく。これは捕捉されるまでどんどん自動で処理が中断されていくことを意味する。自動伝播であるべきかどうかは呼べ出し側のコンテキストに依存する。全く同一の処理内容であっても、呼び出し側のコンテキストにより、自動伝播が望ましい場合と、そうでない場合がある。エラーハンドリング Boost.勉強会 #3
関西46
47.
自動伝播と隔壁自動伝播じゃないと見落としちゃ困るエラーを見逃しやすくなるお金の計算をするようなソフトウェアでは1円でも間違えると大変なことになる。なにか問題があった場合はスルーされるよりは異常終了してくれたほうが嬉しい。かと言ってそれを前提にすると今度は些細な問題でシステム全体が停止することになってしまう為、自動伝搬に対する隔壁は必須。ゲームなんかで1フレームの描画が少し乱れたぐらいの問題で異常終了してもらっちゃ困る。エラーハンドリング Boost.勉強会 #3
関西47
48.
自動伝播と隔壁自動伝播と隔壁をうまく両立させることが重要。trickerr.hを使えばリスナークラスで制御可能!エラーハンドリング Boost.勉強会 #3
関西48
49.
フェイルソフトエラー忘却型コンピューティングとほぼ同義。問題がおきてもその影響を最小限にしてシステム全体の稼働率を向上させる設計、作りのこと。エラーハンドリング Boost.勉強会 #3
関西49
50.
フェイルセーフ問題が起きた際に致命的な損害を起こしうるシステムなどでよく適用される、安全を重視したエラーハンドリングを行う設計、作り。エラーハンドリング Boost.勉強会 #3
関西50
51.
超例外原理主義エラーハンドリングを真面目にやると必ずエラー情報はツリー構造を形成させる必要がある。trickerr.hなら対応しt(略エラー状況を詳細に知るにはエラーに関する情報でなく正常に終了した処理に関する情報も必要。いくつかの処理がまとめて実行される場合、エラー情報だけでは、それ以外の処理が正常に終了したのか?あるいはエラーが発生したことにより中断され実行されなかったのか?と言ったことがわからなくて困ります。エラーハンドリング Boost.勉強会 #3
関西51
52.
不具合仕様書のススメ許容する不具合、許容しない不具合について明記する。許容する不具合の場合について、どの程度の不具合までを許容するのかを明記。アプリが落ちるのはいいけど、ファイルを破損させちゃダメよ。とか。このドキュメントがしっかりしていれば、オーバーエンジニアリングやアンダーエンジニアリングを未然に防げる。異常系のテストケース作成の為にも本来必要な情報。エラーハンドリング Boost.勉強会 #3
関西52
53.
簡潔主義完璧主義より簡潔主義簡素なものであればコストも対してかからない。多くの場合それで事足りるし、そうでない場合にもコストがかかっていないのでロストはしれている。サクッと曲がりなりにも一通りのものを揃えれば、そのほうが手前と時間をかけるべきところに注力できる。エラーハンドリング Boost.勉強会 #3
関西53
54.
簡潔主義最初は碌にエラーハンドリングをやらなくてもいい。しかし、認識するべきエラーを認識できなかった為に大きなロストが発生することも無視できない。後でインターフェイスや最悪大枠のフローの大幅な回収が入るとしても、assertや例外送出まではしっかりやっておくべき。エラー処理は必用に応じて書き足していく。一方で、このスタンスは特に例外送出を行う場合に、些末な問題によりソフトウェアの稼働率を下げかねない点に留意エラーハンドリング Boost.勉強会 #3
関西54
55.
ブラッシュアップリファクタリングと同じようにエラーハンドリングも常により最適な状態にブラッシュアップしていくことが必要。その為のワークフローを確立することも必要。エラーハンドリング Boost.勉強会 #3
関西55
56.
エラーハンドリングの在り方エラーハンドリングそのものは別にプログラミングに限った話ではなく、実世界上の様々な問題がどの様に処理されるかと言ったことは、プログラミング上のエラーハンドリングの参考になり得るし、またプログラミング上のエラーハンドリングは実世界上のエラーハンドリングの参考になり得ます。エラーハンドリング Boost.勉強会 #3
関西56
57.
質疑応答エラーハンドリング●~*(`Д´;
58.
ご静聴ありがとうございました!エラーハンドリングヽ(´∀` )ノ
Download