Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの例外:ガイド

例外は、Pythonインタープリターによって手動で発生させることができます。組み込みの例外は、プログラムの一般的なエラーをキャッチするのに役立ちます。

このガイドでは、例外とは何か、およびそれらがどのように使用されるかについて説明します。コードで例外を処理できるように、例外を発生させる方法の例を見ていきます。

例外とは何ですか?

例外は、論理エラーとも呼ばれ、プログラムの実行中に発生するエラーです。

Pythonには、構文エラーと実行時エラーの2種類のエラーがあります。プログラムが実行される前に構文エラーが発生します。プログラムで構文エラーが発生した場合、プログラムは実行できません。これは、Pythonが構文エラーを含むコードを解釈できないためです。

Pythonがプログラムを実行しているときに、例外とも呼ばれるランタイムエラーが発生します。プログラムの30行目で例外が発生する場合があります。 30行目で例外が発生した場合、30行のコードが実行され、プログラムは停止します。

例外の例を次に示します。

Traceback (most recent call last):
  File "main.py", line 6, in <module>
	s_names.append(n)
AttributeError: 'str' object has no attribute 'append'

この例外は、Pythonが残りのコードを実行できないことを示しています。例外が発生した場合は、メッセージを注意深く読む必要があります。エラーメッセージは、エラーを解決するために知っておく必要のあることのすべてではないにしても、ほとんどを教えてくれます。

エラーメッセージの最後の文を分解してみましょう。

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

AttributeError:「str」オブジェクトには属性「append」がありません

この場合、エラーはAttributeErrorであることがわかります。これは、存在しない属性を参照しようとしていることを意味します。エラーメッセージは、文字列オブジェクトでappend()を使用しようとしていることを示していますが、これは許可されていません。

文字列オブジェクトはappend()をサポートしていないため メソッドの場合、次のステップとして、append()に相当するものを探すことをお勧めします。 文字列用。これは連結です。これで、プログラミングの問題に対する潜在的な解決策があり、それを適用できます。

どこで例外が発生する可能性がありますか?

プログラマーがコード内のエラーをキャッチできるように、Pythonにはさまざまな組み込みの例外があります。これらの例外は、コードの問題の原因を特定して修正できるようにするのに役立ちます。以下は、発生する可能性のある最も一般的な例外のいくつかです。

  • TypeError:関数をサポートしていないタイプのオブジェクトに関数を適用すると発生します。 (例:TypeError:イテラブルにのみ参加できます)
  • SyntaxError:プログラムが実行される前に発生し、構文に問題があることを通知します(例:SyntaxError:無効な構文)
  • KeyError:存在しない辞書のキーを参照した場合に発生します。 (例:KeyError:“ usb_ports”)
  • ImportError:存在しないパッケージ、または存在しないパッケージからの関数をインポートしようとすると発生します。

Python言語で発生する可能性のある多くの例外のほんの一部をリストしました。

例外を発生させる方法

コードで独自のカスタム例外を定義できます。これは、Pythonによって提供される組み込みの例外がプログラムのニーズに合わない場合に役立ちます。

ゲームのパスワードを検証するプログラムを作成します。まず、ユーザーにパスワードの挿入を依頼しましょう。

password = input("Enter a password: ")

ユーザーのパスワードを有効にするには、12文字を超える長さである必要があります。ユーザーのパスワードが12文字以下の場合、例外を発生させます。

これを行うには、ifステートメントを使用します。次のifステートメントは、ユーザーが選択したパスワードが12文字未満であるかどうかを確認します。

if len(password) > 12:
	print("Your password is valid.")
else:
	raise Exception("Your password is not the correct length.")

len()メソッドを使用して、ユーザーのパスワードの長さを計算します。ユーザーが無効なパスワードを挿入すると、プログラムは「パスワードが正しい長さではありません」というメッセージとともに例外を発生させます。

コードを試して、機能するかどうかを確認してみましょう。

Enter a password: Bacon120
Traceback (most recent call last):
  File "main.py", line 6, in <module>
	raise Exception("Your password is not the correct length.")
Exception: Your password is not the correct length.

入力したパスワードは12文字未満でした。無効なパスワードを入力したため、コードが停止します。有効なパスワードを使用してプログラムを実行してみましょう:

Enter a password: Bacon120Bacon120
Your password is valid.

プログラムは正常に実行されます。

例外の処理方法

デフォルトでは、例外はプログラムの実行を停止します。これはエラーの解決策を見つける必要があるため便利ですが、例外が発生した場合にプログラムの実行を停止したくない場合があります。

たとえば、リスト内のデータポイントが有効かどうかを確認している場合、無効なデータポイントが検出されるたびに例外が発生することを望まない場合があります。

例外を処理するには、「try…except」ブロックを使用できます。辞書でアイテムを見つけるプログラムを書いてみましょう。この辞書には、クラスの生徒の名前と、最新のテストでの対応する成績のリストが含まれています。

まず、生徒と成績の情報を使用して辞書を定義しましょう。

data = {
	"Lucy": 73,
	"Carlton": 59,
	"Adam": 73
}

次に、取得したいグレードの名前を挿入するようにユーザーに依頼しましょう。これを「try」ブロック内で実行して、コードの後半で例外を処理できるようにします。

try:
	student = input("Enter the name of the student whose grade you want to retrieve: ")
	print(data[student])

このコードは、ユーザーがプログラムに挿入した名前と一致する名前の学生の成績を出力します。ただし、ユーザーが無効な名前を挿入すると、KeyErrorが発生します。

コードにexceptブロックを追加することで、これを処理します。

try:
	student = input("Enter the name of the student whose grade you want to retrieve: ")
	print(data[student])
except:
	print("This student is not present in the list of grades.")

生徒が見つからない場合は、except句が実行されます。プログラムを実行してみましょう。

Enter the name of the student whose grade you want to retrieve: Lucy
73

有効な学生名を入力すると、プログラムが機能します。無効な学生名を挿入した場合は、プログラムを試してみましょう。

Enter the name of the student whose grade you want to retrieve: Kaitlin
This student is not present in the list of grades.

例外が発生しますが、プログラムは停止しません。代わりに、「except」ブロックの内容が実行されます。

try…exceptブロックの詳細については、Pythontry…exceptに関するガイドをお読みください。

結論

例外は、コードに論理エラーがあることを通知します。例外が発生すると、例外が発生した例外のタイプとエラーメッセージが表示されます。この情報を使用して、例外の原因を見つけることができます。

raiseステートメントを使用して、独自の例外を発生させることができます。 try…exceptコードブロックを使用して例外を処理できます。

これで、プロのようなPython例外を解決するために必要なツールが手に入りました!


  1. Rubyの例外に関する初心者向けガイド

    先日、初心者向けに書かれたRuby例外の紹介を探していました。基本的なRuby構文は知っているが、例外とは何か、なぜそれが役立つのかよくわからない人です。見つからなかったので、自分で試してみることにしました。お役に立てば幸いです。紛らわしい点がありましたら、@StarrHorneまでお気軽にツイートしてください。 :) 例外とは何ですか? 例外は、予期しないイベントを処理するRubyの方法です。 コードにタイプミスをしたことがあり、プログラムがクラッシュしてSyntaxErrorのようなメッセージが表示された場合 またはNoMethodError 、その後、動作中の例外を見てきました。

  2. Rubyの例外

    例外 例外的なに関する情報を保持する特別なデータ構造です。 アプリケーションで発生している状態。例外は、特定の状況に対処する方法がわからないためにプログラムを実行し続けることができない場合に送信されるシグナルです。 Rubyでは、このようなシグナルの送信を発生と呼びます。 例外。 raise 'this is an exception' puts "This message won't be printed." 動作中の例外を確認する最も簡単な方法は、自分で例外を発生させることです。 raiseを使用する メッセージ付きのメソッドの場合、