Python 例外処理の概要

WBOY
リリース: 2016-06-16 08:42:54
オリジナル
1330 人が閲覧しました

この記事では、Python での一般的な例外処理を詳しくリストします。詳細は次のとおりです。

1. 例外とカスタム例外のスロー

Python は例外オブジェクトを使用して異常な状況を表します。エラーが発生すると例外がスローされます。例外オブジェクトが処理されない、またはキャッチされない場合、プログラムはいわゆるトレースバック (エラー メッセージ) を表示して実行を終了します。

①.raise ステートメント

Python の raise キーワードは例外を発生させるために使用されます。これは、以下に示すように、C# および Java の throw キーワードと基本的に同じです。

# -- coding: utf-8 --

def ThorwErr():
  raise Exception("抛出一个异常")

# Exception: 抛出一个异常
ThorwErr()

ログイン後にコピー

raise キーワードの後の throw は一般的な例外タイプ (Exception) です。一般的に、Python には例外モジュールに多くの例外タイプが組み込まれており、より詳細な例外を確認できます。 dir 関数を使用する場合、例外の例外タイプは次のとおりです。


import exceptions

# ['ArithmeticError', 'AssertionError'.....]
print dir(exceptions)

ログイン後にコピー

送信例外

例外をキャッチしたが、それを再発生させたい (例外を渡す) 場合は、パラメーターなしで raise ステートメントを使用できます。


# -- coding: utf-8 --
class MuffledCalculator:
  muffled = False
  def calc(self,expr):
    try:
      return eval(expr)
    except ZeroDivisionError:
      if self.muffled:
        print 'Division by zero is illegal'
      else:
        raise
ログイン後にコピー

②. カスタム例外タイプ

Python で独自の特別なタイプの例外をカスタマイズすることもできます。Exception クラスから (直接的または間接的に) 継承するだけです。


class SomeCustomException(Exception):
  pass
ログイン後にコピー

2. 例外のキャッチ

C# の try/catch と同様に、Python では次のように try/excel キーワードを使用して例外をキャッチします。


# -- coding: utf-8 --

try:
  print 2/0
except ZeroDivisionError:
  print '除数不能为0'

ログイン後にコピー

①. 複数の例外をキャッチする

Exception ステートメントは、その後に宣言された例外タイプのみをキャプチャします。他のタイプの例外がスローされる可能性がある場合は、別のException ステートメントを追加するか、次のようなより一般的な例外タイプを指定することもできます。 🎜>


複数の例外をキャッチするには、複数のExceptステートメントを宣言するだけでなく、Exceptステートメントの後に複数の例外をタプルとしてリストすることもできます。
# -- coding: utf-8 --
try:
  print 2/'0'
except ZeroDivisionError:
  print '除数不能为0'
except Exception:
  print '其他类型异常'
ログイン後にコピー


# -- coding: utf-8 --
try:
  print 2/'0'
except (ZeroDivisionError,Exception):
  print '发生了一个异常'
ログイン後にコピー
② 例外情報を取得します

各例外にはいくつかの例外情報が含まれます。通常、この例外情報を記録する必要があります。


# -- coding: utf-8 --
try:
  print 2/'0'
except (ZeroDivisionError,Exception) as e:
  # unsupported operand type(s) for /: 'int' and 'str'
  print e
ログイン後にコピー
3. 最後に句

finally 句は try 句と組み合わせて使用​​されますが、Except ステートメントとは異なり、try 句内で例外が発生したかどうかに関係なく、finally 句のコードが実行されます。一般に、finally 自体は、ファイルまたはソケットを閉じるためによく使用されます。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート