ホームページ  >  記事  >  バックエンド開発  >  Python のエラーと例外の概念

Python のエラーと例外の概念

高洛峰
高洛峰オリジナル
2017-02-28 10:32:451647ブラウズ

Python のエラーと例外の概念 (合計)

1. エラーと例外の処理方法

  1. 一般的なエラー

  2. a: NameError

  3. if True: SyntaxError

  4. f = oepn( ' 1.txt'): IOError

  5. 10/0: ZeropisionError

  6. a = int('d'): ValueError

  7. プログラム実行中断: KeyboardInterrupt

2. Python - try_before 処理を使用します。例外 (1)

try:
    try_suite
except Exception [e]:
    exception_block
  1. try は、try_suite でエラーをキャプチャし、例外の処理に渡すために使用されます

  2. 例外の処理が例外の処理に使用される場合は、例外ブロックを使用して例外を処理します。例外を処理します

# case 1
try:
    undef
except:
    print 'catch an except'
# case 2
try:
    if undef
except:
    print 'catch an except'
  • case1: 例外は実行時エラーであるためキャッチできます

  • case2: 例外は構文エラーまたは実行前エラーであるためキャッチできません

- -

# case 3
try:
    undef
except NameError,e:
    print 'catch an except',e
# case 4
try:
    undef
except IOError,e:
    print 'catch an except',e
  • case3: 設定が NameError 例外をキャプチャするため、例外をキャッチできます

  • case 4: IOError が設定されており、NameError が処理されないため、例外をキャッチできません

import random

num = random.randint(0, 100)

while True:
    try:
        guess = int(raw_input("Enter 1~100"))
    except ValueError, e:
        print "Enter 1~100"
        continue
    if guess > num:
        print "guess Bigger:", guess
    elif guess < num:
        print "guess Smaller:", guess
    elif guess == num:
        print "Guess OK,Game Over"
        break
    print &#39;\n&#39;

3. Pythonはtry_excelを使用して例外を処理します(2)

  • try-Except: 複数の例外を処理します

try:
    try_suite
except Exception1[e]:
    exception_block1
except Exception2[e]:
    exception_block2
except ExceptionN[e]:
    exception_blockN

4. Python-try_finallyは

try:
    try_suite
finally:
    do_finally
  • を使用しますtryステートメントがキャッチされない場合エラーが発生すると、コードは do_finally ステートメントを実行します

  • try ステートメントがエラーをキャッチすると、プログラムは最初に do_finally ステートメントを実行し、その後、キャプチャされたエラーは処理のために Python インタープリターに渡されます

5。 -try-excel-else-finally

 try:
    try_suite
 except:
    do_except
 finally:
    do_finally

  • try ステートメントが例外をキャプチャしない場合は、try コード セグメントを実行した後、finally を実行します

  • try が例外をキャッチした場合は、エラーの処理を除いて最初に実行されます。そして、finally

を実行します

  • 6. Python-with_asステートメント

    with context [as var]:
        with_suite

  • withステートメントは、コードをより簡潔にするためにtry_excel_finalステートメントを置き換えるために使用されます

  • context式returnはオブジェクトです

  • varはコンテキスト戻りオブジェクト、単一の戻り値、または祖先を保存するために使用されます

with_suite は、var 変数を使用してコンテキスト戻りオブジェクトを操作します

  1. with ステートメントは本質的にコンテキスト管理です:

    __enter__()__exit()__,支持该协议的对象要实现这两个方法

  2. 上下文管理器:定义执行with语句时要建立的运行时上下文,负责执行with语句块上下文中的进入与退出操作

  3. 进入上下文管理器:调用管理器__enter__方法,如果设置as var语句,var变量接受__enter__()方法返回值

  4. 退出上下文管理器:调用管理器__exit__

  5. コンテキスト管理プロトコル: が含まれていますメソッド __enter__()__exit()__。このプロトコルをサポートするオブジェクトは、これら 2 つのメソッドを実装する必要があります

    コンテキスト マネージャー: with ステートメントの実行を定義します。確立されるコンテキストは、with ステートメント ブロック コンテキストでの開始操作と終了操作の実行を担当します
  1. コンテキスト マネージャーに入る: マネージャーの __enter__ メソッドを呼び出します。as var ステートメントが設定されている場合、 var 変数 __enter__() メソッドの戻り値を受け入れます
  2. コンテキスト マネージャーを終了します: マネージャーの __exit__ メソッドを呼び出します
  3. class Mycontex(object):
        def __init__(self, name):
            self.name = name
    
        def __enter__(self):
            print "__enter__"
            return self
    
        def do_self(self):
            print "do_self"
    
        def __exit__(self, exc_type, exc_val, exc_tb):
            print "__exit__"
            print "Error:", exc_type, " info:", exc_val
    
    
    if __name__ == "__main__":
        with Mycontex(&#39;test context&#39;) as f:
            print f.name
            f.do_self()
  4. whith ステートメント アプリケーション シナリオ:

ファイル プロセス スレッド間でミューテックス オブジェクト (ミューテックス ロックなど) を操作します

  • コンテキストをサポートするその他のオブジェクト

    • 2. Python のアサートおよびレイズ ステートメント

    • raisステートメント

    • reiseステートメントは、積極的に例外をスローするために使用されます

    • 文法形式: raise[例外[,args]]

例外: 例外クラス
  • args: 例外情報のタプルを記述します
    • raise TypeError, &#39;Test Error&#39;
      raise IOError, &#39;File Not Exit&#39;

    • assertステートメント

    • Assertionステートメント:assertステートメントは、式がtrueであるかどうかをチェックするために使用され、AssertionErrorが発生します

    • グラム形式:assertexpression[ ,args ]

expression:expression

  • args:判定条件の記述情報

    • assert 0, &#39;test assert&#39;
      assert 4==5, &#39;test assert&#39;
    • 2. Pythonの標準例外とカスタム例外

    • 標準例外

      Python のエラーと例外の概念

    Python が構築されました -例外では、プログラムが実行される前にすでに存在します
    • カスタム例外:

    • Python では、Python に関係しない異常な状況を記述するためにカスタム例外を許可します

カスタム例外は継承する必要があります例外クラス


カスタム例外はアクティブにのみトリガーできます


class CustomError(Exception):
    def __init__(self, info):
        Exception.__init__(self)
        self.message = info
        print id(self)

    def __str__(self):
        return &#39;CustionError:%s&#39; % self.message


try:
    raise CustomError(&#39;test CustomError&#39;)
except CustomError, e:
    print &#39;ErrorInfo:%d,%s&#39; % (id(e), e)
🎜🎜🎜🎜 Python のエラーと例外の概念に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。 🎜🎜🎜🎜
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。