検索
ホームページバックエンド開発Python チュートリアルPython でのエラー処理: ベスト プラクティス。例外を効果的に処理する方法を調べる

Error Handling in Python: Best Practices. Explore how to handle exceptions effectively

概要:

プログラム エラーは回復できません。プログラムにエラーが発生すると、プログラムはすぐに終了するかクラッシュします。

優れたプログラマーは、コードやソフトウェアが、ソフトウェアの使用中に発生する可能性のあるエラーや例外を、クラッシュしたり望ましくない結果を生み出すことなく適切に処理できることを保証します。数値入力のみを受け入れる金融機関向けのソフトウェアを作成することを想像してください。ユーザーが算術演算で数字の代わりに文字を入力すると、通常はエラーがスローされ、ユーザーが 1 人であるためにソフトウェアがクラッシュします。エラーワードを処理する場所。これは決して良いことではありません。ビジネスにとって悪影響を及ぼし、顧客の不満を招く可能性があり、無能なために誰かが職を失う可能性があります。

この記事では、ユーザーの操作によって発生する可能性のあるコード内のエラーを最適に処理する方法を学びます。乞うご期待。

前提条件

この記事は次のような方に適しています:

  • コード内の例外を処理する方法を学びたい Python ソフトウェア開発者。
  • すでに Python に精通していて、Python でのエラー処理の概念を学びたい人。
  • Python エラー処理の知識を向上させたいと考えている既存の専門家。

目標

この記事を読み終えると、読者は次のことができるようになります:

  • Python のエラー処理の概念とその重要性を明確に理解します。
  • カスタム例外クラスとその実装方法について学びます。
  • Python におけるエラーと例外の主な違いを理解します。

エラーと例外の説明

エラー例外 は、しばしば同じ意味で使用されますが、技術的には異なる意味を持ちます。 Python では、ErrorException はどちらも BaseException のサブクラスです。たとえ異なっていても、共通点があることを示しています。

エラー

エラーは回復できません。プログラムがエラーに遭遇すると、すぐに終了するかクラッシュします。エラーが予想される場合でも、プログラムでエラーを処理する方法はありません。いくつかのエラーを以下に示します:

SyntaxError

これはプログラマーが直面する最も一般的なタイプのエラーの 1 つであり、コードが正しい Python 構文に従っていない場合に発生し、解析中に検出できます。これは、学習者や他のプログラミング言語から Python に乗り換えた人にとって、容易に生じる疑問です。

name = “Austin”;
print(name)

Python ではステートメントがセミコロンで終わらないため、結果は SyntaxError になります。

IndentationError

このエラーは、Python コードが正しくインデントされていない場合に発生し、コードの解析時に検出されます。 Python ではインデントが非常に重要です。中括弧を使用するほとんどの言語とは異なり、これは Python でコードのブロックを定義できる唯一の方法です。

name = “Austin”;
print(name)

このコードは、不適切なインデントによりエラーを引き起こします。次のようになります:

active = True
if (active):
print(“The user is active”)

例外

Python では実行時に例外が発生します。エラーとは異なり、プログラムによって適切に処理または捕捉できるため、プログラムはクラッシュすることなく実行を継続できます。言い換えれば、それらは回復可能です。 Python の一般的な例外をいくつか示します:

組み込み例外

これらのタイプの例外は、Python プログラミング言語の一部です。それらの一部を以下にリストします:

ValueError

このエラーは、型が正しい場合でも、無効なパラメーターが関数に渡された場合に発生します。

if (active):
    print(“The user is active”)

上記のコード スニペットから、数値文字列を関数に渡すと、数値に正常に変換されます。それ以外の場合は、ValueError が生成されます。

def str_num(num_string):
    return(int(string))

TypeError

このエラーは、不適切な型パラメータが関数に渡されたときに発生します。

print(str_num(“123”)) #works perfectly
print(str_num(“abc”)) #raises a ValueError

これにより TypeError がトリガーされます。

IndexError

このエラーは、間違ったインデックスを使用してリスト内の値にアクセスしようとすると発生します。

def addition(num1, num2):
    return num1 + num2
# calling the function
addition(5, A)

IndexError にアクセスできないため、結果は my_list[2] になります。

KeyError

このエラーは、不正なキーまたは存在しないキーを使用して辞書内の値にアクセスしようとすると発生します。

my_list = [“dog”, “cat”]
my_list[2]

これにより KeyError がトリガーされます。 他の組み込み例外はここで見つけることができます。

カスタム例外

カスタム例外はプログラマによって定義されます。ここで、Python を使用すると、プログラマーは、プログラムが実行中にチェックする必要がある条件を手動で定義し、見つかった場合は例外をスローできます。これを実現するには、Exception クラスを継承するクラスを作成します。

例外の処理

例外処理により、アプリケーションのライフサイクル中に発生する特定のエラーが発生した場合でも、ソフトウェア アプリケーションが予測可能なパフォーマンスを発揮できるようになります。このセクションでは、これをプログラミングで実装する方法を学びます。

try-except ステートメントを使用します

try-except ステートメントは、エラーや例外をスローする可能性のあるコードを安全に処理する方法を提供します。 try ステートメントは、問題のあるコードまたは try 句をラップします。これは、プログラム全体のエラーを引き起こす可能性が最も高いコードの部分です。これは、ユーザーからの入力を受け取るとき、ファイルから読み取るときに発生する可能性があります。いくつか例を挙げてみましょう。

except ステートメントは except 節の始まりを示します。これは、except ブロックで囲まれたコードの残りの部分です。 except 句は、try ブロック内で発生した例外を処理します。

実行ワークフローについて説明します。 Python プログラムは通常、「問題のある」コードを含む try ブロックに到達するまで実行されます。その時点で try ブロック内のコードの実行中にエラーの可能性がない場合、except ブロックはスキップされます。そして続行します 残りのコードベースを実行します。ただし、try ブロック内のコードの実行中にエラーが発生した場合、例外オブジェクトが作成された直後に、制御は except ブロックにジャンプし、一致する例外クラスによって処理されます。

name = “Austin”;
print(name)

上記のコード スニペットから、数値以外の値がプログラムに渡されると、例外オブジェクトが作成され、ValueError がスローされます。コントロールはすぐに except ブロックにジャンプし、そこで適切な例外クラスをスキャンします。ここでは、ValueError クラスで十分です。エラーは正しく処理されました。ただし、正しいクラスが見つからない場合、制御は外側の try ブロック (存在する場合) に移動し、それでも例外が正しく処理されない場合、プログラムはクラッシュします。

1 つの except ステートメントを使用して複数の例外クラスを処理します

複数の例外クラスをチェックし、特定の例外を処理できます。いくつかの例外のうちどれがコードの実行につながったのかわからない場合は、このアプローチをお勧めします。以下のコード スニペットを参照してください。

active = True
if (active):
print(“The user is active”)

ワイルドカード例外クラス

Exception クラスは BaseException の直接のサブクラスです。 Exception クラスは、致命的ではないすべての例外の基本クラスです。

ほとんどの場合、コード実行中にスローされるほとんどの例外は、Exception クラスで十分に処理できます。

if (active):
    print(“The user is active”)

Exception クラスは致命的ではない例外を処理できますが、注意して使用することをお勧めします。正しい Exception クラスを使用すると、デバッグに適し、コードの可読性が向上します。

finally ステートメントを使用します

finally ブロックで囲まれたコード部分は、例外が発生したかどうかに関係なく実行されます。これにより、ファイルを閉じたり、メモリ リソースを解放したりするクリーンアップ タスクの処理に適しています。

def str_num(num_string):
    return(int(string))

カスタム例外クラスの作成

カスタム例外を作成すると、プログラマはソフトウェア プログラムに対して特定の例外を発生させることができます。これには、特定のソフトウェア プログラムの機能に悪影響を与える可能性のある特殊な条件や特殊なケースが含まれる場合があります。定義されたカスタム例外クラスは、Exception クラスから継承する必要があります。

print(str_num(“123”)) #works perfectly
print(str_num(“abc”)) #raises a ValueError

上記のコード スニペットは、カスタム例外を作成して使用する方法を示しています。ユースケースに応じて、より複雑な方法で使用できます。

エラー/例外処理が重要な理由

「ユーザーを信頼するな」はソフトウェア開発者の間でよく言われる言葉ですが、これは、ユーザーがソフトウェア アプリケーションとどのように対話するか、またどのような入力を行うか完全には分からないことを繰り返し示しています。 、プログラマがアプリケーションを作成するときに行っていること 他にも、考えられなかったかもしれないいくつかの例外的なケースがあります。エラー/例外を適切に処理するためのいくつかの重要な理由を以下に説明します:

  1. クラッシュを防ぐ 例外処理がないと、未処理のエラーが原因でプログラムが突然クラッシュする可能性があります。これにより、データの損失やユーザー エクスペリエンスの低下が生じる可能性があります。 例: 例外処理なし:
print(10 / 0) # ZeroDivisionError: ゼロによる除算

例外処理を使用します:

試してみてください: 印刷(10/0) ZeroDivisionError を除く: print("ゼロで割ることはできません!")

  1. ユーザーエクスペリエンスの向上 例外が適切に処理されると、不可解なシステム エラーの代わりに意味のあるエラー メッセージが表示されるため、アプリケーションが使いやすくなります。 例:
試してみてください: age = int(input("年齢を入力してください:")) ValueError を除く: print("入力が無効です。数値を入力してください。")
  1. アプリケーションの安定性を維持する これにより、エラーが発生した後でもアプリケーションが実行を継続できるため、安定性が確保されます。 例:
def 除算(a, b): 試す: a/bを返す ZeroDivisionError を除く: return "ゼロによる除算は許可されません!"

print(divide(10, 2)) # 出力: 5.0 print(divide(10, 0)) # 出力: ゼロによる除算は許可されません。

  1. 極端な状況への対処 例外処理を使用すると、ネットワーク障害、ファイルの欠落、無効なユーザー入力などの予測不可能な状況に対処できます。 例:
試してみてください: open("data.txt", "r") をファイルとして使用します: コンテンツ = file.read() FileNotFoundError を除く: print("ファイルが見つかりません。")
  1. 簡潔なコードを書くことを奨励します
    例外処理を使用すると、通常のロジックをエラー処理ロジックから分離することで、コードの読み取り、デバッグ、保守が容易になります。

  2. デバッグを容易にする
    詳細なエラー メッセージと例外ログにより、開発者はコード内の問題を迅速に特定して修正できます。
    例:

インポートログ

試してみてください: 結果=10/0 e としての例外を除く: logging.error("エラーが発生しました", exc_info=True)

  1. 重要なシステムにとって重要 信頼性が重要なシステム (銀行、医療など) では、データの破損や損失を引き起こすことなくエラーを安全に管理するために例外処理が必要です。

結論

プログラミング用語では、エラーと例外はほとんどの場合同じ意味で使用されます。 Python におけるエラーと例外の主な違いは、それらがソフトウェア プログラムにどのような影響を与えるかです。インタプリタがプログラムを解析するときに、構文エラーやインデント エラーなどのエラーが発生すると、プログラムがクラッシュする可能性があります。一方、例外が正しく処理されないと、実行時にプログラムがクラッシュする可能性があります。カスタム例外は、プログラマが特定のソフトウェア アプリケーションに固有の例外クラスを定義できるようにすることで、エラー処理機能を拡張します。

エラー処理もデバッグにとって非常に重要です。これにより、アプリケーションでエラーが発生する理由を確認できるため、ソフトウェア管理者に問題を解決するのに十分な情報が提供されます。ソフトウェア アプリケーションの堅牢性を確保するために、例外処理がコードに適切に導入されていることを常に確認してください。

読んでいただきありがとうございます。

以上がPython でのエラー処理: ベスト プラクティス。例外を効果的に処理する方法を調べるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Pythonと時間:勉強時間を最大限に活用するPythonと時間:勉強時間を最大限に活用するApr 14, 2025 am 12:02 AM

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Python:ゲーム、GUIなどPython:ゲーム、GUIなどApr 13, 2025 am 12:14 AM

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Python vs. C:比較されたアプリケーションとユースケースPython vs. C:比較されたアプリケーションとユースケースApr 12, 2025 am 12:01 AM

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間のPython計画:現実的なアプローチ2時間のPython計画:現実的なアプローチApr 11, 2025 am 12:04 AM

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Python:主要なアプリケーションの調査Python:主要なアプリケーションの調査Apr 10, 2025 am 09:41 AM

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間でどのくらいのPythonを学ぶことができますか?2時間でどのくらいのPythonを学ぶことができますか?Apr 09, 2025 pm 04:33 PM

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?Apr 02, 2025 am 07:15 AM

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 Mac版

SublimeText3 Mac版

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

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。