この講義では、エラーについて議論していきます。例外処理のエラーは、コード内で発生する可能性があります。
他人があなたのコードを思いがけなく使用し終えると、誰も完璧でエラーが確実に発生します。
エラー処理を使用して、今後コードで発生する可能性のあるエラーを計画することができます。
例えば、あなたのコードのある部分では、ファイルを開くことを試みるかもしれません。後で誰かがあなたのコードを使用していて、実際にファイルを開いたときに実際にファイルに書き込もうとするかもしれません。私たちのプログラムの中に何らかのエラーがあり、スクリプト全体が停止し、何らかのエラーステートメントが戻ってきます。
実際には、エラー処理を使用して、他のコードがエラーを報告してもスクリプトを続行できるようにすることができます。
したがって、エラーが発生しても、コードはエラーを報告し続けます。
今、例外処理のこのプロセスには3つのキーワードがあります。
それ以外は試してみます。
最後に、キーワードとこれらすべてに関連するコードブロックがあります。
そのため、試行されるコードのブロックであるtryブロックの下では、エラーが発生する場合もあれば、そうでない場合もあります。
したがって、実際にtryブロックのコードを試してみてください。エラーがある場合はacceptブロックがあり、tryブロック内にエラーがある場合に実行されるブロックコードです。
次に、例外またはエラーの発生の有無にかかわらず常に実行されるコードの最終ブロックであるfinallyブロックのコードがあります。
ノートにジャンプして、これらのブロックの使い方の例を見てみましょう。
OK。
発生する可能性のあるエラーの例を実際に見てみましょう。
add関数が1つと2つの関数を取り込むという非常に単純な関数を持っているとしましょう。そして、それが何を合計して出力するのか、ここで問題はないと考えているかもしれません。
私はちょうど10と20を追加すると言うつもりです。あなたは30を返します。
しかし、次のような状況があるとしましょう。
あなたはいくつかの可変番号を持っています。
これを10に設定します。
次にコードの束があり、後で2番目の数字を取得するには入力として入力し、2番目の入力は2番目の入力と等しいとしましょう。
お願いします。
番号を入力してください。
それで、私たちに番号を入力してください。
私たちは20を言います。そして、私たちがやってやることは、私が1番と2番に再び関数を呼び出させることです。
うまくいけば、この関数は既に実際に文字列であることに注意してください。
だから私がこれを実行すると、あなたはタイプエラーがあると言っています。
Pythonがタイプエラーについてあなたに伝えようとしている実際の特定の例外があり、サポートされていない演算タイプが4つの整数と文字列であると言われることに注意してください。
だから基本的に私は整数と文字列を一緒に追加することはできませんねえ、私は一緒に2つの整数を追加することができますか、私は2つの文字列を連結することができますが、私はこれらの両方のデータ型で動作することはできません。
これは、コードを実行しているときに発生する可能性のあるエラーの種類の例です。
残念ながら、私はprintステートメントを持っていたとしましょう。
それで何かが起こったとしましょう。
そして、私はこれを実行し、このprint文は実際には起こりません。
何が起こるのか、私は間違いを起こす。
それが私のスクリプトの終わりです。
このコードブロックを何百行も通過すれば問題ありません。
私はまだこのタイプのエラーを取得し、それが実行されるつもりです。
tryとacceptとfinallyステートメントの背後にあるアイデアは、それが起こったとしても、そのコードブロックを実行しようとしているということです。
たとえエラーがあっても、さらにコードを続けることができます。
では、実際にどうやってこれを行うのですか？
キーワードコロンを試してみる必要があります。
そして、私たちはコードのブロックを持っています。
これはあなたが試したいコードです。
だから、このコードを試してみたいが、エラーがあるかもしれない。
だから私は結果が10プラス10前に等しいと言うつもりです。
したがって、実際にはエラーを引き起こすわけではありません。
そして、私がここでやろうとしていることは、私のコードブロックを除外するつもりです。
ですから、私の例外的なコードブロックは、エラーがあってこれが本当に一般的な場合に起こりたいことです。
あなたが他の人が使っているより大きなライブラリを構築するときは、ブロックを除外することができますので、より具体的なメッセージをユーザに出力することができます。
あなたが正しく追加していないように見えるかもしれません。
だから私はこれとこれを実行するつもりです。
私たちは実際に空気を誘発しません。
代わりに、ここでは結果を問題なく呼び出すことができます。これは、Templetonに問題がないため意味があります。
実際にその空気を作りましょう。
ここでは、文字列10に整数10を追加しようとしています。
これを実行すると、正しく追加していないように見えます。
ここで何が起こったのか気づきましょう。
コードブロックの残りの部分はacceptステートメントで実行することができました。以前のような何らかのエラーがあったため、プログラム全体がシャットダウンされませんでした。
代わりに私はこのコードブロックを試してみましたが、私は例外的に言っていましたが、一般的にここに私は何かのタイプのエラーがある場合を除いて言うことができます。
さて、例外がなければ、コードブロックを実行したいと考えてみましょう。
私はこのようなことをすることができました。
私は言うことができます。
Else Princeの結果とそれ以上のことは、Princeの広告がうまくいったと言えるでしょう。
だから、今私はこれを実行するときちょうどちょっとあなたが正しくコーディングされていないように見えると言う。
これは試しとして知られています。
を除いて。
Elseステートメント。
ここには、私たちが試みるコードのブロックがあります。
それから、2つの選択肢があります。
tryブロックにエラーがある場合は、except code elseを実行します。
そこにエラーがなければ、これを実行します。
それ以外のコード。
ですから、これを修正し、エラーを発生させないようにしましょう。
我々はこれを実行する。
成功したので、このコードブロックを試してみましょう。
コードブロック以外は実行しません。
代わりに私たちはまっすぐに他の場所に飛び乗り、広告は順調に進み、20人がいると言います。
OK。
それでは試してみましょう。
を除いて。
それ以外の場合は、最終的にキーワードを使用してコードブロックを作成できるようになりました。
常に実行しています。
エラーがあっても関係なく。
だから私が実際にいくつかのファイルを書き込もうとしているところを例にしてこれを示します。
だから、このtry exceptの概念を探そう。
そして最後に新しい例を試してみましょう。この例ではファイルをオープンしようとしていますので、いくつかのテストファイルを用意して、Wモードで開くことから始めます。
これは正しいモードで、ファイルを開いて書き込むか、ファイルがまだ存在しない場合は作成することができます。
そして、私はFを正しく言うと、私はこのファイルにテスト行を書くつもりです、そして、私はexceptと言うでしょう、ここで私はコロンを除いて言うことができます、そして、それはエラーを除いてするつもりです。
しかし、実際には、私は特にこのタイプのエラー以外にしようとすることができますを除いて、私は具体的に多くのエラーの種類があります。
だから何が起こるかは目立つ。
このタイプのエラーがありました。
私がすることができるのは、タイプエラーが出ている場合にのみねえと言うことです。
タイプエラーがありました。
次に、実際にファイルを開いたり書き込んだりする別のエラーを試すことができます。
また、ドキュメントに行くと、エラーや例外が発生することがあります。これは、一般的な構文エラーや例外について説明しています。
しかしここにはリンクがあることに気付くでしょう。ここでは、ドキュメンテーションのセクション5にジャンプする例外が組み込まれています。これは実際に起こりうる例外やエラーのすべてのタイプのリストです。
だから、あなたがダウンしているとアサーションエラーがあり、ファイルエラーインポートエラーのインデックスエラーが続いている場合。
これらのうちのいくつかは、OSエラーの再帰エラーがすべての種類のエラーをすべてオーバーフローさせていることがわかっていない前に見たことがあります。
あなたは特にキャッチしようとすることができます。
したがって、私たちの場合、あなたが開く権限を持たないファイルを開いたり書き込んだりするときに起こるエラーはOSです。
Err。
そして、私たちはあなたがあなたが持っているPythonのバージョンに応じて自分自身の空気を言うことができるOSの空気を持っている賃金を印刷するつもりですそして、我々は最終的にブロックに追加するつもりですそしてこの最終的にブロックは常にどのような。
だから私はいつもこれを実行しようとしていると言います。今はただ戻ってきます。
私はいつも走ります。
実際にここで何が起こっているのですか？
私たちがテストファイルを開いて、それを呼び出すと、実行中のブロックを除いてすべての動作が意味を持たないので、実行中のブロック以外はこれがありません。
だから私は最後に私は印刷します。
私はいつも走ります。
今は実際には私たちがそれを開くことによってエラーを誘発しています。それは読み取り専用のアクセス許可です。
したがって、ファイルに書き込もうとすると、この行にエラーが表示されるはずです。
実際にはエラーではないので、タイプエラーが発生することはありません。
代わりに、OSエラーを取得する必要があります。これは、読み取り権限のみを持つファイルに書き込むことに関連するエラーです。
だから私がこれを実行すると私は戻ってくる。
あなたはOSエラーがあります。
また、これ以外の場合を除いて、これ以外のブロックを実行していた前回と異なり、exceptブロックが実行されfinallyブロックが実行されるfinallyステートメントで実行されます。
そして、これはあなたができる特定のエラーのために特定のものをプリントするためにいくつかの例外を並べる方法です。ここでタイプエラーがあり、あなたが例外と言うならば他のすべてのタイプを覚えていないとします。これの終わりに
これは他のすべての例外になります。
だから、他のすべての例外とすべてが再び実行されます。
また、タイプエラーやその他のエラーを検出しなかったため、他のすべての例外があります。
ですから、コロン以外の場合は、そのエラーを表示します。
OK。
だから、Pythonで始まっているので、おそらくすべてのエラーの種類を覚えておらず、あなたのコードブロックはちょうどこのように見えるでしょう。
お試しください。
を除いて。
そして最後に。
だからちょうどtryブロックのコードを繰り返してみると、あなたのtryステートメントにエラーがあるときにコードのブロックが発生することを除いて、あなたが試みようとしているコードブロックがあります。
そして、エラーがあるかどうかにかかわらず常に実行されるfinallyブロックを置くか、エラーがない場合にX-2に行くELSEブロックコードを持つことができます。
ここでもう一度これに焦点を当てましょう。
今すぐそこにいると言っても間違いはないでしょう。
私がこれを実行すると私は戻ってくる。
私はいつも走ります。
だからエラーはありません。
最後にブロックがまだ実行されます。
私たちは間違いを引き起こします。
私は他のすべての例外を言います、なぜなら私はちょうど言っているのですが、ここではそれを除いては何でもします。
このコードブロックは、最終的にこのコードブロックを実行します。
これは最終的にブロックされます。エラーが発生しても常に実行されます。
ここでは、ユーザーから特定のタイプの入力を取得しようとする関数の内部を最終的にブロックするトリックを使用する方法を示して、ここでの議論を終了しましょう。
ここでは、次のようにします。
私たちはDPFが私に頼むと言うでしょう。 だから、この関数がしていることは、ユーザーに整数を尋ねようとすることです。
だから私は次のように言うでしょう。
結果が整数の整数に等しくなるようにしてください。
数字を入力し、ここでエラーが発生した場合はexceptと言うでしょうし、数字ではないwhoopsを印刷します。
そして最後に、最終的にプリントとトライと言うでしょう。
だから私はこれを実行し、この関数をちょうど反復するつもりですが、私は今この関数を呼び出すつもりです。
シフトを入力してください。
それは私に番号を教えてください。
私は20を整数にキャストまたは変換することに成功したので、それを刻印する数字ではありません。
しかし、私がセルを再び動かすとどうなりますか？
そして今私は言葉を出します。
今私は確かに文字列の単語を整数に変換できないことを知っている。
だから私がこれを実行すると、数字ではないうわさが表示されます。
今、私たちは試練の終わりを得る。
最終的には例外です。
ですから、whileループを使用してこのtryブロックを継続的に実行する方法を見てみましょう。
そしてそこにエラーがある場合を除いて。
この関数を調整して間違った単語を入力した後で終了するのではなく、whileループの中に入れて、実際にコードブロックを持つまで何度も何度も繰り返していくようにしましょう例外なし。
だから私はそれを真実の間にやろうとしていますし、あなたはいつも慎重にしなければなりません。
Trueというのは、基本的に、このwhileループから抜け出すためにbreak文をどこかで使用する必要があるからです。
私はこのすべてのハイライトタブをここでインデントするつもりです。
この結果を入力として取得し、数字以外のwhoopsを除いて言います。
そして、私はこれをもう少し読みやすくするつもりと言うつもりです。
論理が現れていれば、エラーがないと言って、私は言うつもりです。
Elswythを実際に組み合わせることができます。
そこで、このコードブロックを試してみましょう。
もしエラーがあれば、私は数字ではないうわさを言うつもりです。
例外がないことを意味するelseを続行します。
これは、ユーザーが整数を指定したことを意味します。
だから私ははいと言うでしょう。
ありがとうございました。
今私はこのwhileループから抜け出す必要があります。
だから私はここでブレークステートメントは、loop forループ中にループを開いて終了することを覚えています。
ループ中にこれを終了します。
そして最後に私たちは言うでしょうし、最後には試してみます。
これで4つのコードブロックを真の中に入れて、私たちがイエスに感謝したら私たちは壊れてしまいます。最後にprintとtryをつけたfinallyステートメントがあります。王子は私がいつも最後に走ることを明らかにしてください。
それでは、エラーに関係なく、この最終的なコードブロックは常に実行されます。
だから私たちはこれを実行して整数を求めるつもりです。
正しい整数を入力して、20ヒットを入力しましょう。
それははいと言います。
ありがとうございました。
そして最後に私はいつも最後に走ります。
それを提供しよう。
文字列にはqヒットが入力され、それにはwhoopsが表示されます。
それは数字ではありませんし、試してみません。
最後に私はいつも最後に走ります。
私たちが本当のところにいる間は、この休憩は実際にはまだ実行されていません。
だから我々は、数字が提供される別のチャンスを持っています。
Qそれは再びおっしゃいです。
そして、間違ったものを何度も何度も何度も何度も提供し続けることができます。実際に整数としてキャストできるものを最終的に提供するまで、入力を求め続けるつもりです。
あなたは90と言う、それははいと言う。
ありがとうございました。
そして、最後に私はいつも正しいでしょう。
ここで何が起こっているのかは、例外がある場合はこのコードブロックを試してみてください
何らかの文を印刷してから壊すことができます。
そして、例外がないときには、通常、あなたはこれを脱したいと思うでしょう。
そして最後に何らかの理由で何かを続けたいと思ったら。
だから、ここで良いことは私があなたにもう一度尋ねるようになることができる。
改行。
だからこそ、なぜあなたが最終的に言うのかという現実的な例です。
だから私がこれをもう一度走らせると、番号を教えてください。
私たちはそれに間違った答えを与えます。
それは私たちの数字だと言います。
私はあなたにもう一度聞いてみるつもりです。数字を入力してから、正しい番号を入力してください。
そしてそれははいと言います。
ありがとうございました。
残念ながら、私は再びあなたに尋ねるつもりだと言うだろう。
だからこそ、人々は何度も他のものを混ぜることを好まないのです。
最終的にはステートメントがありますが、最終的なステートメントを取り除くのではなく、あなたがこのようなコードを使用しているときに、自分の番号を入力してください。
Qそれは数字ではありません。
あなたは実際に番号を提供し、そうするまでこれを何度も何度でもやり続けることができます。私はエルジンが最終的にブロックしたいかどうかはあなた次第だと思っています。
大丈夫。
それがtryの基本です。
を除いて。
そうではありません。
次に来ることは、あなたにこの新しいスキルをテストする課題を与えるつもりです。
彼らがいるかどうかがわかります。