Pythonの例外を詳しく解説
Python は優れたプログラミング言語であり、その読みやすさと理解のしやすさ、豊富なパッケージ ライブラリにより、さまざまな分野で幅広い用途に使用されています。ただし、Python コードを作成するプロセスでは、変数名エラー、構文エラーなど、いくつかのエラーが必然的に発生します。このとき、Python は例外処理を使用して、プログラムの予期せぬ停止を回避し、プログラムのデバッグ プロセスを簡素化することができます。プログラミングの効率も向上します。この記事では、例外の種類、例外処理方法、例外スタック トレースなど、Python の例外について詳しく紹介します。
1. 例外の種類
- SyntaxError: 構文エラー
Python インタープリターがプログラム内で構文エラーを検出すると、SyntaxError 例外がスローされます。 。例:
print 'hello world'
Python 3.x バージョンでは、print は括弧内に記述する必要があります。正しい書き方は次のとおりです:
print('hello world')
まだ print 'hello world' と書かれている場合、プログラムの実行時に SyntaxError 例外がスローされます。
- NameError: 変数名エラー
Python は未定義の変数に遭遇すると、NameError 例外をスローします。例:
a = 1 print(b)
変数 b が定義されていないため、NameError 例外がスローされます。
- TypeError: タイプ エラー
サポートされていない操作タイプを使用しようとすると、TypeError 例外がスローされます。例:
a = 'hello' b = 5 print(a + b)
文字列と整数を直接追加できないため、TypeError 例外がスローされます。
- ZeroDivisionError: ゼロ除算エラー
ゼロ除算しようとすると、ZeroDivisionError 例外がスローされます。例:
a = 5 / 0
ゼロによる除算は不正な操作であるため、ZeroDivisionError 例外がスローされます。
- IndexError: インデックス エラー
IndexError 例外は、リストまたはタプルに存在しない要素にアクセスしようとするとスローされます。例:
a = [1, 2, 3] print(a[3])
a には 3 つの要素しかないため、インデックス 3 にアクセスすると IndexError 例外がスローされます。
- KeyError: ディクショナリ キー エラー
KeyError 例外は、ディクショナリに存在しないキーにアクセスしようとするとスローされます。例:
a = {'name': 'Tom', 'age': 20} print(a['gender'])
キー「gender」が a に存在しないため、KeyError 例外がスローされます。
- ValueError: 値エラー
関数のパラメーターの型は正しいが、パラメーターの値が間違っている場合、ValueError 例外がスローされます。例:
a = int('abc')
「abc」は整数型に変換できないため、ValueError 例外がスローされます。
2. 例外処理メソッド
Python では、try-Except ステートメントを使用して例外を処理できます。 Try ブロックには問題が発生する可能性のあるコード ブロックが含まれ、Exception ブロックには例外が発生した場合の処理コードが含まれます。
複数の例外タイプを処理する場合は、複数の else ステートメントを使用できます。例:
try: a = 1 / 0 except ZeroDivisionError: print('除数为零') except TypeError: print('类型错误')
try ブロックのコードを実行するときに ZeroDivisionError 例外が発生すると、プログラムは最初のブロックのコードを実行して、「除算はゼロです」と出力します。TypeError 例外が発生した場合、ブロック内のコードは「TypeError」を出力します。
すべての種類の例外をキャッチしたい場合は、Except ステートメントの基本形式を使用できます。
try: # 可能会出错的代码 except: # 异常处理代码
現時点では、Except ブロック内のコードはすべての種類の例外をキャッチします。 。
try-Except ステートメントに加えて、Python には、例外が発生したかどうかに関係なく実行されるコード用のfinally 句も用意されています。例:
try: # 可能会出错的代码 except: # 异常处理代码 finally: # 无论如何都会执行的代码
3. 例外スタック トレース
Python プログラムを作成する場合、例外が発生すると、プログラムは例外の種類と例外情報を要求するだけでなく、例外も表示します。スタック トレース情報、つまり、例外が発生したときのコード呼び出しスタック。
例外スタック トレース情報は非常に便利で、例外が発生したコードの場所を見つけるのに役立ち、問題のデバッグと修正が容易になります。
以下は例外スタック トレース情報の例です。
Traceback (most recent call last): File "exceptions.py", line 11, in <module> c = a / b ZeroDivisionError: division by zero
このうち、Traceback では例外スタック トレース情報全体が表示され、最後の行には例外の種類と例外情報が表示されます。
長時間実行されるプログラムや運用環境のプログラムの場合、例外スタック トレース情報をログ ファイルに書き込んで、イベント後の分析を容易にすることができます。
4. 概要
この記事では、例外の種類、例外処理方法、例外スタック トレースなど、Python の例外について詳しく紹介します。 Python プログラムを作成する場合、例外処理は必須かつ重要なスキルであり、プログラム内で例外を処理することによってのみ、プログラムの安定性と正確性が保証されます。
以上がPythonの例外を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









C++ では、例外処理は try-catch ブロックを通じてエラーを適切に処理します。一般的な例外の種類には、実行時エラー、論理エラー、範囲外エラーが含まれます。ファイルを開くエラー処理を例に挙げます。プログラムがファイルを開くのに失敗すると、例外がスローされ、エラー メッセージが出力され、catch ブロックを通じてエラー コードが返されます。これにより、プログラムを終了せずにエラーが処理されます。例外処理には、エラー処理の集中化、エラーの伝播、コードの堅牢性などの利点があります。

C++ クラス設計におけるエラー処理とログ記録には、次のものが含まれます。 例外処理: カスタム例外クラスを使用して例外をキャッチして処理し、特定のエラー情報を提供します。エラー コード: 整数または列挙を使用してエラー状態を表し、戻り値で返します。アサーション: 事前条件と事後条件を確認し、条件が満たされない場合は例外をスローします。 C++ ライブラリのロギング: std::cerr および std::clog を使用した基本的なロギング。外部ログ ライブラリ: レベル フィルタリングやログ ファイル ローテーションなどの高度な機能を提供するサードパーティ ライブラリを統合します。カスタム ログ クラス: 独自のログ クラスを作成し、基礎となるメカニズムを抽象化し、さまざまなレベルの情報を記録するための共通インターフェイスを提供します。

PHP の最適なエラー処理ツールとライブラリには次のものがあります。 組み込みメソッド: set_error_handler() および error_get_last() サードパーティ ツールキット: Whoops (デバッグとエラーのフォーマット) サードパーティのサービス: Sentry (エラーの報告と監視) サードパーティライブラリ: PHP-error-handler (カスタム エラー ログおよびスタック トレース) および Monolog (エラー ログ ハンドラー)

C++ 例外処理を使用すると、例外をスローし、try-catch ブロックを使用して例外をキャッチすることで実行時エラーを処理するカスタム エラー処理ルーチンを作成できます。 1. 例外クラスから派生したカスタム例外クラスを作成し、what() メソッドをオーバーライドします。 2. throw キーワードを使用して例外をスローし、例外のタイプを指定します。扱った。

C++ ラムダ式の例外処理には独自のスコープがなく、デフォルトでは例外はキャッチされません。例外をキャッチするには、ラムダ式キャッチ構文を使用できます。これにより、ラムダ式がその定義スコープ内の変数をキャプチャできるようになり、try-catch ブロックで例外処理が可能になります。

マルチスレッド C++ では、例外処理は適時性、スレッドの安全性、明確性という原則に従います。実際には、ミューテックスまたはアトミック変数を使用することで、例外処理コードのスレッド セーフを確保できます。さらに、例外処理コードの再入性、パフォーマンス、テストを考慮して、コードがマルチスレッド環境で安全かつ効率的に実行されることを確認してください。

Golang では、エラー ラッパーを使用して、元のエラーにコンテキスト情報を追加することで新しいエラーを作成できます。これを使用すると、さまざまなライブラリまたはコンポーネントによってスローされるエラーの種類を統一し、デバッグとエラー処理を簡素化できます。手順は次のとおりです。errors.Wrap 関数を使用して、元のエラーを新しいエラーにラップします。新しいエラーには、元のエラーのコンテキスト情報が含まれています。 fmt.Printf を使用してラップされたエラーを出力し、より多くのコンテキストとアクション性を提供します。異なる種類のエラーを処理する場合は、errors.Wrap 関数を使用してエラーの種類を統一します。

PHP 例外処理: 例外追跡を通じてシステムの動作を理解する 例外は、PHP がエラーを処理するために使用するメカニズムであり、例外は例外ハンドラーによって処理されます。例外クラス Exception は一般的な例外を表し、Throwable クラスはすべての例外を表します。 throw キーワードを使用して例外をスローし、try...catch ステートメントを使用して例外ハンドラーを定義します。実際のケースでは、例外処理を使用して、calculate() 関数によってスローされる DivisionByZeroError をキャプチャして処理し、エラー発生時にアプリケーションが適切に失敗できるようにします。
