Python 3学習ノート:異常コードデバッグ


異常とは
プログラム実行中に発生したエラーを総称して異常(bug)と呼ぶ.これらの異常には、キーワード入力エラー、呼び出しエラーなどの文法エラーがある可能性があります.このような異常は明示的で、よく発見されています.もう1つは暗黙的なエラーであり,使用時にのみ発見され,使用者の操作に関係している.
Pythonでよく見られる異常ヒントを紹介します.
例外タイプjpg
例外処理文
try...except...使用時に異常が発生する可能性のあるコードをtry文に配置し、処理結果をexcept文に配置することで、tryの後ろのコードにエラーが発生した場合にexceptのコードを実行します.try後のコードに異常がなければexcept後のコードは実行されません.
try:do some thingsexcept exceptionName:do some things
ExceptionNameでは、発生する可能性のある例外の名前を指定します.例外の名前を指定しない場合は、発生する可能性のあるすべての例外を取得します.
サンプルコード:
def division():print("=====================")
apple = int(input("        :"))
child = int(input("        :"))

result = apple // child
remain = apple % child

if remain > 0:
    print("   {:d}          {:d}     ,   {:d}  ,   {:d}  。".format(apple, child, result, remain))
else:
    print("   {:d}          {:d}     ,   {:d}  。".format(apple, child, result))

if name=="main":try:division()except ZeroDivisionError:print(「りんごは0人の子供に分けられない!!」)
例外をキャプチャする場合は、次のような複数の例外を同時にキャプチャできます.
try:do some thingsexcept(ValueError, ZeroDivisionError) as e:do some things
try...except...elseこの文はexceptの後にelse文を追加し、try文に異常が見つからない場合に実行するコードを指定し、try文に異常が見つかった場合、elseの後のコードを実行しないようにします.
try:do some thingsexcept exceptionName:do some thingselse:do some things
サンプルコード:
def division():print("=====================")
apple = int(input("        :"))
child = int(input("        :"))

result = apple // child
remain = apple % child

if remain > 0:
    print("   {:d}          {:d}     ,   {:d}  ,   {:d}  。".format(apple, child, result, remain))
else:
    print("   {:d}          {:d}     ,   {:d}  。".format(apple, child, result))

if name=="main":try:division()except ZeroDivisionError:print(「りんごは0人の子供に分けられない!!」)Except ValueError as e:print(「入力エラー!!!」e)else:print(「アップル配分成功...」)
try...except...finally try文に異常が発生しているかどうかにかかわらず、finally後のコードが実行されます.
try:do some thingsexcept exceptionName:do some thingsfinally:do some things
サンプルコード:
def division():print("=====================")
apple = int(input("        :"))
child = int(input("        :"))

result = apple // child
remain = apple % child

if remain > 0:
    print("   {:d}          {:d}     ,   {:d}  ,   {:d}  。".format(apple, child, result, remain))
else:
    print("   {:d}          {:d}     ,   {:d}  。".format(apple, child, result))

if name=="main":try:division()except ZeroDivisionError:print(「りんごは0人の子供に分けられない!!」)Except ValueError as e:print(「入力エラー!!!」e)else:print(「アップル配分成功...」)finally:print(「りんごを1回割り当てた.」)
raise関数に異常が発生する可能性がありますが、現在の関数で処理したくない場合は、raise文を使用して関数に異常を投げ出すことができます.
raise [exceptionName[(reason)]]
ここで、exceptionName[(reason)]はオプションパラメータであり、投げ出された異常名および異常情報の記述を指定し、省略すると異常をそのまま投げ出す.
サンプルコード:
def division():print("=====================")
apple = int(input("        :"))
child = int(input("        :"))

if apple < child:
    raise ValueError("        !")

result = apple // child
remain = apple % child

if remain > 0:
    print("   {:d}          {:d}     ,   {:d}  ,   {:d}  。".format(apple, child, result, remain))
else:
    print("   {:d}          {:d}     ,   {:d}  。".format(apple, child, result))

if name=="main":try:division()except ZeroDivisionError:print(「りんごは0人の子供に分けられない!!」)Except ValueError as e:print(「入力エラー!!!」e)else:print(「アップル配分成功...」)finally:print(「りんごを1回割り当てた.」)
プログラムテスト
IDEデバッグの使用
基本的にすべてのIDEには、Pythonが持つIDLEやPyCharmなどのコードデバッグ機能があります.通常、異常が発生した場所にブレークポイントを設定し、ここでデータの値が正しいかどうかを確認します.具体的な内容は私も学习の过程の中で、デバッグすることができるコードがなくて、后で资料があったら补充しています.
assert文を使用してデバッグ
この文は一般的に、プログラムがある時点で満たさなければならない条件を検証するために使用されます.
1assert expression [reason]
ここでexpressionは条件式であり,偽であればAssertError異常を投げ出し,逆に何もしない.reasonはオプションのパラメータであり、前のexpressionがどこでエラーが発生したかをよりよく知るために使用されます.
サンプルコード:
def division():print("=====================")
apple = int(input("        :"))
child = int(input("        :"))

assert apple > child, "     。"

result = apple // child
remain = apple % child

if remain > 0:
    print("   {:d}          {:d}     ,   {:d}  ,   {:d}  。".format(apple, child, result, remain))
else:
    print("   {:d}          {:d}     ,   {:d}  。".format(apple, child, result))

if name=="main":try:division()except ZeroDivisionError:print(「りんごは0人の子供に分けられない!!」)Except ValueError as e:print(「入力エラー!!!」e)else:print(「アップル配分成功...」)finally:print(「りんごを1回割り当てた.」)