‫お帰りなさい｡
‫このビデオでは､ エラーをキャッチする方法と､ エラーが発生したときにプログラムをクラッシュさせたりせず､ 何らかの処理を行う方法について説明します｡
‫つまり､ catchとfinallyを一緒に使うのが一般的な使い方で､ triブロックでリソースを取得して使用し､ 例外的な状況に対処してcatchブロックでリソースを解放し､
‫finallyブロックでリソースを解放するというものである｡
‫そして､ その意味するところは､ このビデオで取り上げるとおりです｡
‫そこで､ エラーに遭遇するために､ 次のようにしてみましょう｡
‫コンソールライトラインを使用しています｡
‫CWをダブルタップして､ ここに数字を入力してくださいと書いて､ ユーザーに数字を入力するように促しています｡
‫それをユーザー入力に格納して､ 文字列変数にして､ ユーザーが入力したり発言したりするものを読み込んで､
‫最終的には数字になるようにします｡
‫それが､ 私たちの目指すところです｡
‫しかし､ 以下のようにユーザー入力をintとし､ intを使用した場合､ dot passとなります｡
‫つまり､ すでにパスが見えているわけですが､ ここでユーザーによって与えられたユーザー入力を解析しようとするわけです｡
‫それを整数にしようとするのですが､ それを実行すると､ 数字を入力してくださいと､ 3の間に私たちのプログラムは大丈夫です｡
‫実際にここにコンソールドット読み取りキーを追加してみましょう｡
‫だから､ プログラムはまだ大丈夫だということが､ さらによくわかるのです｡
‫だから､ 数字を入力してください｡
‫5を入力するだけで､ 私たちのプログラムはまだ動いているし､ クラッシュもしませんでした｡
‫すべて順調なので､ 今度はもう一度実行してみましょう｡
‫でも､ 数字を入力するのではなく､ 文字を入れたり､ 文章を書いたりしてみましょう｡
‫それは違います｡
‫整数値で渡すことができます｡ 私の場合､ この16行目で行っています｡
‫入力しようとすると､ プログラムがクラッシュして､ 「処理されたシステム形式の例外 入力文字列が正しい形式ではありません」と表示されます｡
‫わかりました｡
‫つまり､ ユーザーから与えられた文字列は､ 整数にパースするための正しい形式ではなかったのです｡
‫そして､ それがフォーマットの例外というものです｡
‫あとはtryとcatchのブロックを作ることで対処できます｡
‫例えば､ tryを使用するとします｡ ここにuseというオプションがあります｡
‫試しにキャッチしてみてください｡
‫Cまたはtryをダブルタップすると､ try catchで例外をスローするようになります｡
‫そこで今度は､ そのコードを試してみて､ もし動かなかったら､ プログラムがクラッシュしないようにしたいのです｡
‫そして､ このトライというのは､ そういうことなんです｡
‫つまり､ どんなエラーでも､ 実行時のエラーコードの意味でのコードエラーでも､ ここにあるものが実行されようとするのです｡
‫そして､ うまくいかなかった場合は､ キャッチボール｡
‫BLOCKが実行されます｡
‫つまり､ このボディや中括弧の中にあるものがすべて実行されるのです｡
‫だから､ 今はここに投げるだけです｡
‫では次に､ まだ投げているからthrowをなくそう｡
‫屋良 では､ エラーが発生した場合にコンソールに何か書き込んでみましょう｡
‫だから､ フォーマット例外のようなことを言うんです｡
‫次回は正しいタイプを入力してください｡
‫そしてそれは､ 種類がわかっていることです｡
‫一般のユーザーにはわからないでしょう｡
‫だからここには､ Please don't enter letters, but only numbersとか､ そういうことを書くんです｡
‫では､ ここでもう一度見てみましょう｡
‫またエラーにエラーを実行しましょう､ そして､ この情報の形式を例外にするだけです｡
‫次回は正しいタイプを入力してください｡
‫プログラムはクラッシュしなかったので､ プログラムやIDが「何か問題があるからコードをうまく処理しなさい」という意味で､
‫この例外に遭遇したわけではありませんよね？
‫大体そういう構造になっているんですね｡
‫Tryがあるので､ ここでエラーになる可能性のあるコードを試し､ 例外を発生させることができます｡
‫そして､ catchブロックがあり､ 破壊がうまくいかなかったときに実行されます｡
‫つまり､ エラーが発生するたびに､ このキャッチブロックが実行されるわけです｡
‫ここにあるのは､ 例外を含むキャッチです｡
‫例外とは､ 非常に一般的なエラーのことです｡
‫ですから､ どのような種類の例外であっても構いませんが､ 実際にそのエラーに遭遇したら､ このコードを削除して､
‫どのような種類の例外を作成したかを確認しましょう｡
‫だから､ 何でもいいから文字列のようなものを入力するんだ｡
‫そして､ 実は投げないから何も起きない｡
‫だから､ それを止めよう｡
‫先ほどのように投げてみましょう｡
‫ただ､ エラーを投げて､ もう一度実行するんです｡
‫ここに何かを入力しているところ､ system forward exceptionと表示されました｡
‫そこで､ 実際の例外について､ もう少し正確な情報を得ることができました｡
‫これで､ よし､ これはフォーマット例外だ､ だからここでは例外ではなく､ フォーマット例外を使うべきだということがわかりました｡
‫だから､ ここには多くの例外がある｡
‫しかし､ ここで使うのは､ フォーマットの例外です｡
‫ここにあるように､ systemというクラスがあり､ そのフォーマット例外と､ 引数のフォーマットが無効なときや､
‫複合フォーマット文字列がうまく形成されていないときに投げられる例外があります｡
‫まさにその通りです｡
‫だから､ この投げやりをなくそう､ と｡
‫それでいいのです｡
‫では､ 今度は違う時代に走らせてみましょう｡
‫では､ とても長い数字を作ってみましょう｡
‫文字列に収まりきらないもの｡
‫なぜなら､ ご想像のとおり､ あるいはご記憶のとおり､ 文字列は特定の量のスペースしか持っていないからです｡
‫では､ 何個の数字がそうなるのかわかりませんが､ 1つの整数の中にこの程度の数字しか格納できないとしましょう｡
‫つまり､ ここではすべてオーバーフローしてしまうので､ うまくいかないのです｡
‫だから､ 文字列で処理するには情報量が多すぎるんです｡
‫だから､ 今これを入力すると
‫入力システムのオーバーフロー例外が発生するのですが｡
‫それで､ こうなりました｡
‫システムオーバーフロー例外｡
‫まあ､ RN32では大きすぎるか小さすぎるかのどちらかでしたね｡
‫わかりました｡
‫そう言ったんです｡
‫そして今度は､ その例外もキャッチする必要があります｡
‫そこで､ どのように対処するかは2通りあります｡
‫だから､ ここで別の例外を使うか､ ただ例外を使うか､ どちらかです｡
‫ですから､ 他の例外はすべて一般的に処理し､ 例えば､ コンソールの点､
‫赤線､ 一般的な例外､
‫何か問題が発生した､ と言うだけです｡
‫では､ もう一度このように非常に長い数字を作り､ それを入力してみましょう｡
‫そして､ オーバーフロー例外であるにもかかわらず､ 一般的な例外があることがわかります｡
‫だから､ そのように対応することができるのです｡
‫ですから､ そこにあるさまざまな種類の例外をすべて把握していない場合や､
‫それらを個別にキャッチしたくない場合は､ このようにすることもできますし､ そこまで正確に､ 正しい1つのオーバーフロー例外を入力するだけでもよいのです｡
‫それで､ 今度はうまくいって､ システムのオーバーフロー例外が表示されるのです｡
‫もう一度実行して､ 数字を入力してください｡ ここでは非常に長い数字を作成しましょう｡
‫そして､ 別のテキストオーバーフロー例外を入力しなかったので､ まだ一般的な例外が表示されます｡
‫イン32では数字が長すぎたり短すぎたりした｡
‫では､ もう一度見てみましょう｡
‫また､ オーバーフロー例外の番号が32の中では長すぎるか短すぎる｡
‫わかりました｡
‫というわけで､ 一般的にはこのように例外をキャッチすることができます｡
‫そして､ 他に実行できる例外があるとすれば､ ご覧の通り､ 引数nullの例外があります｡
‫では､ その意味するところをみてみましょう｡
‫それさえも手に入れられれば､ そして見ることができれば｡
‫例外あり｡
‫次回は正しいタイプを入力してください｡
‫つまり､ この場合､ 入力が空でも､ 何も入力しなくても､ 空文字列があるので､
‫NULL例外は発生しないのです｡
‫だから､ この実際の例外にしたがって､ これで走らない｡
‫このように､ 何かコードを実行しようとすると､ インテルはここに情報を与えてくれるのです｡
‫だから､ 本当に便利なんです｡
‫引数NULL例外､ フォーマット例外､ オーバーフロー例外があることがわかります｡
‫そこで､ ここに別の例外を追加して､ 引数がNULLの例外や引数NULLの例外と呼ぶこともできます｡
‫そして､ 引数null例外のようなことを言うのです｡
‫その価値は今､ 空っぽだった｡
‫ですから､ この時代に遭遇するためにも､ ヌルを使わなければならないのです｡ まだ説明していませんが､
‫後で説明します｡
‫そして､ もしあれば､ それをやってみるのもいい｡
‫ですから､ すでに注目の映像をご覧になっている方は､ そのエラーに遭遇してみてもいいかもしれません｡
‫わかりました｡
‫これでtryキャッチの使い方はわかりましたね｡
‫そして､ もう一つ､ この動画で紹介したいのは､ やっと､ やっと､ そんな感じに仕上がったということです｡
‫つまり､ 最後のキーワードを使って､ また中括弧を使って､ このコードブロックの中で､ つまり本体の中で､
‫いつでも実行されるべきコードを入力するのです｡
‫そうやって､ 私たちを捕まえてみてください｡
‫エラーが実行されたか､ エラーが動作しなかったかは問題ではありません｡
‫エラーはありませんでした｡
‫最後に､ やはり呼ばれるでしょう｡
‫だから､ これはどうせ呼ばれる｡
‫ということでもありますね｡
‫すぐにわかります｡
‫矢印に遭遇して､ 4分間の例外が発生したことを確認し､ とにかくこれが呼ばれたことを確認し､
‫これが最後のブロックです｡
‫そして､ このfinallyブロックの背後にある考え方は､ 例えば､ あなたがインターネット接続を開始しようとした場合､ またはあなたがファイルに書き込もうとした場合､
‫最終的にそこにエラーが発生する可能性があることです｡
‫そこで､ インターネット接続が切れたり､ 書き込みたいファイルにアクセスできなかったり､
‫その他の例外が発生して､ 接続やファイルをいずれにせよ閉じたいとします｡
‫ファイルを開いて､ そのファイルに書き込もうとして､ トライブロックの中で書き込んだ後､
‫うまくいったかもしれないし､ うまくいかなかったかもしれませんが､
‫絶対にやっておきたいことは､ もう一度ファイルを閉じることです｡
‫その後､ インターネットへの接続を閉じる必要がありますが､ それはファイルの中で行うことになります｡
‫BLOCK これはとても便利で､ 入力出力タイプや､ そう､ 一般的にはインターネットやBluetoothなどの接続を扱うときにかなり重要です｡
‫このように､ トライ＆キャッチについて知っておくべきことはたくさんありますが､ 最も重要なことは､ もうお分かりですね｡
‫これでtryの使い方もわかったし､ catchの使い方もわかったし､ 例外を見つける方法もわかった｡
‫場合によっては､ それほど明白ではないこともあります｡
‫そのため､ どのような例外処理を実行できるかを確認しないケースもあります｡
‫しかし､ コード内で例外に遭遇した場合､ それがどの種類の例外なのかがわかります｡
‫なぜなら､ Microsoft Visual Studioがどの例外なのかを教えてくれるので､
‫その例外をキャッチするか､ 一般的な例外タイプを使用すればいいだけだからです｡
‫そうでなければ､ 少し､ いや､ 飽きるかもしれませんし､
‫少し怠けるかもしれません｡
‫コードも打ってみて､ 自分の目で確認することが本当に大切です｡
‫だから､ ちょっとしたチャレンジは､ どうぞゼロで割ってくださいということです｡
‫だから､ シンプルなんです｡
‫ゼロで割ってみて､ そのために2つの変数を使えばいいんです｡
‫では､ さっそく試してみましょう｡
‫そこで､ ゼロで割ってみようと思います｡
‫2つの整数とnoneを使い分ける｡
‫1は5になり､ none 2は0になる｡
‫そして今度は､ ここに入力された結果を使うことにします｡
‫結果は､ 数値1を数値2で割ったものになります｡
‫では､ tryとcatchを使う前に､ 実際にtryとcatchを使わずに試してみましょう｡
‫では､ 実行してみましょう｡
‫数字を入力して､ ゼロ例外で割ってください､ で処理してほしい｡
‫では､ 次にtryとcatchを追加してみましょう｡
‫だから､ 試しに､ あるいは実際にただ楽にしてみてください｡
‫入ってみましょう｡
‫ここで試しに､ ブロックダブルタブを使用してみてください｡
‫そして今､ tryの中で､ それを実行したいのです｡
‫そして､ うまくいかなかった場合は､ 単にC doubleのようなものを書きたいだけです｡
‫ゼロで割り切れない｡
‫そして､ 今度はこれです｡
‫先ほどの例外は､ だから見るのです｡
‫ゼロで除算しようとすると､ ゼロ除算例外と呼ばれる｡
‫だから､ それを見つけたいなら､ この下にあります｡
‫だから､ まさにそれを使うだけなんです｡
‫例外をゼロ除算例外に置き換えてみる｡
‫では､ もう一度そのコードを実行してみましょう｡
‫以前からあった数字を入力してくださいと表示され､ ゼロで割ることができますと表示される｡
‫そうですね｡
‫だから､ それを試してほしいし､ それだけに達成感を味わってほしい｡
‫そして､ 自分でトライを作り､ これをキャッチする方法がおわかりいただけたと思います｡
‫そして､ 次のビデオでは､ もっと派手なものを使っていきます｡
‫では､ 現地でお会いしましょう｡