Pythonの例外処理:基本から応用まで

python
記事内に広告が含まれています。

Pythonでの例外処理は、コードがエラーを処理し、正常な動作を維持するための重要な技術です。

エラーが発生した際に、プログラムを停止させずに処理を続けることが可能です。

この記事では、例外処理の基本的な使い方から応用的なテクニックまでを詳しく解説します。

DMM WEBCAMP
  • 未経験者向けプログラミングスクール
  • 現役エンジニアがしっかりサポート
  • 卒業後も安心の転職・副業サポート

Pythonにおける例外処理の基本

Pythonの例外処理は、エラーをキャッチし、適切な処理を行うための構造です。

通常、tryexceptfinallyブロックを使用します。

まずは、基本的な例外処理の構造について説明します。

基本的な例外処理の構造

try:
    # エラーが発生する可能性のあるコード
    x = 10 / 0
except ZeroDivisionError:
    # エラーが発生した場合の処理
    print("ゼロで割ることはできません")

このコードでは、ZeroDivisionErrorが発生した場合にエラーメッセージを表示します。

複数の例外をキャッチする方法

try:
    x = int("hello")
except (ValueError, TypeError):
    print("無効な値が入力されました")

複数の例外をキャッチするためには、exceptブロックにタプルで指定します。

finallyブロックの使用

try:
    file = open("test.txt")
except FileNotFoundError:
    print("ファイルが見つかりません")
finally:
    print("処理が完了しました")

finallyブロックは、例外の発生に関わらず、必ず実行される部分です。

CodeCamp
  • 現役エンジニアからスキルを学べる
  • 満足度は驚異の97.4%
  • 300社以上のIT企業で研修に導入
  • 毎日9時〜21時まで、無料カウンセリングを開催中!

カスタム例外の作成方法

標準の例外処理に加えて、自分で例外を作成することができます。

これにより、特定の状況に対して適切なエラーメッセージを提供できます。

次に、カスタム例外の作成と使用方法を紹介します。

カスタム例外クラスの定義

class CustomError(Exception):
    pass

try:
    raise CustomError("これはカスタム例外です")
except CustomError as e:
    print(e)

このコードでは、CustomErrorという新しい例外クラスを定義しています。

カスタム例外を使ったエラーハンドリング

class InvalidAgeError(Exception):
    def __init__(self, age):
        self.age = age
        super().__init__(f"{age} は無効な年齢です")

def check_age(age):
    if age < 0:
        raise InvalidAgeError(age)

try:
    check_age(-1)
except InvalidAgeError as e:
    print(e)

この例では、年齢が無効な場合にInvalidAgeErrorを発生させています。

カスタム例外の活用シーン

カスタム例外は、特定の状況に対するエラーメッセージをカスタマイズしたいときに有効です。

【リモートワークには必須】
キャリアに合わせてお得に光回線を利用しよう
ドコモ光
開通後、最短一ヶ月で35,000円のキャッシュバック!
 
auひかり
難しい条件一切なしで、最大12,7000円のキャッシュバック!
 
ソフトバンク光
高額キャッシュバックや豪華特典をお届け!

例外処理とリソース管理

Pythonの例外処理は、ファイルやネットワークリソースの管理にも役立ちます。

withステートメントを使用することで、リソースのクリーンアップを自動化できます。

ここでは、リソース管理と例外処理の組み合わせについて紹介します。

withステートメントを使ったファイル操作

try:
    with open("data.txt", "r") as file:
        data = file.read()
except FileNotFoundError:
    print("ファイルが見つかりません")

このコードでは、withステートメントを使い、ファイルを開いた後、自動的に閉じる処理を行っています。

ネットワーク接続と例外処理

import requests

try:
    response = requests.get("https://example.com")
    response.raise_for_status()
except requests.exceptions.HTTPError as err:
    print(f"HTTPエラーが発生しました: {err}")

ネットワーク操作では、接続エラーやタイムアウトを処理するために例外処理を使用します。

データベース接続のエラーハンドリング

import sqlite3

try:
    conn = sqlite3.connect('example.db')
except sqlite3.Error as e:
    print(f"データベースエラー: {e}")
finally:
    conn.close()

データベース操作でも例外処理を用いることで、エラーが発生しても接続を確実に閉じることができます。

プログラミングスクール受講時には教育訓練給付制度を利用することで、受講料の最大80%の給付を受けることが可能です。

例外処理のベストプラクティス

Pythonの例外処理を正しく使うことで、コードの信頼性を高めることができます。

ただし、例外処理の乱用は避け、必要な箇所だけで使うことが大切です。

ここでは、例外処理のベストプラクティスを紹介します。

過剰な例外処理を避ける

try:
    x = int(input("数字を入力してください: "))
except:
    print("エラーが発生しました")

過剰な例外処理は、エラーの原因を特定しにくくするため、exceptブロックには具体的なエラーを指定しましょう。

具体的な例外をキャッチする

try:
    result = 10 / 0
except ZeroDivisionError:
    print("ゼロ除算エラーが発生しました")

このように、発生し得るエラーを予測して、特定の例外をキャッチすることが重要です。

エラーメッセージをカスタマイズする

例外が発生した際には、有益なメッセージを提供することで、エラーの原因を素早く特定できるようにしましょう。

techgym
  • 20000人が学んだpythonの教材
  • 正しい情報をまとめて入手
  • 様々なゲームを作成しながら楽しくpythonが身に付く
  • 自主学習派はこれ一択!

今なら1年間有効なzoomサポート付き!

まとめ: Pythonで例外処理をマスターする

Pythonの例外処理を理解し適切に実装することで、エラーに強いプログラムを作成できます。

例外処理を適切に使うことで、コードの信頼性と可読性を高めることが可能です。

この記事で学んだ内容を活用して、例外処理を効果的に取り入れましょう。

【給付金が受けられる】おすすめプログラミングスクール!
  • DMM WEBCAMP
    転職成功率98%&離職率2.3%
    転職できなければ全額返金DMM.comグループならで非公開求人も多数
  • テックアカデミー
    【転職保証】受講生の100%が内定獲得!9割以上が未経験からスタート!LINEヤフー監修&万全サポート
  • Aidemy Premium
    【給付金利用の相談歓迎】AI・データ分析学ぶならAidemy Premium
  • ウズウズカレッジ
    初心者・文系出身者でもOK、IT未経験からの専門的な就業サポート

コメント

タイトルとURLをコピーしました