4日目-----異常

例外の構成: 例外の種類: 例外の説明情報
ZeroDivisionError: ゼロによる除算
ValueError: 基数 10 の int() の無効なリテラル: 'a'

例外のキャッチ: プログラムの実行中にエラーが発生しました。プログラムを終了させずに実行を継続し、ユーザーに例外メッセージを表示し、エラーを記録します。


単一の例外をキャッチします。
try:
例外以外の
    例外を引き起こす可能性のあるコードです。 type:
    例外が発生したときに実行されるコード
try: 
    num=input('値を入力してください') 
    num =10/int(num) 
    print(num) 
# ZeroDivisionError: ゼロによる除算
# ValueError: 基数 10 の int() の無効なリテラル: 
ZeroDivisionError を除く 'a': 
    print('divisor not be 0')
複数の例外をキャッチするために
試してください:
    発生する可能性のある例外コード
else (例外タイプ 1、例外タイプ 2、...):
    例外が発生したときに実行されるコード
try:
    例外が発生する可能性のあるコード、
    例外が発生したときに実行されるコード




例外タイプ 1 以外の
例外タイプ 2 を除く:
    コードが異常に実行されました
    ...... 

try: 
    num=input('値を入力してください') 
    num=10/int(num) 
    print(num) 

# ZeroDivisionError: ゼロによる除算
# ValueError : 無効基数 10 の int() のリテラル: 
ZeroDivisionError を除く'a' : 
    print('除数を 0 にすることはできません') 
ValueError を除く: 
    print('入力エラー。数値を入力してください')


例外情報をキーワードとして出力

try:
    例外が発生する可能性があります
例外の種類 1 を除くコードを変数名として指定: 
    print(例外変数名)例外の種類 2 を除く
    例外の実行コードを
変数名として: 
    print(例外変数名)
    例外の実行コード
    .....


すべてをキャッチ 異常欠点: 取得できない例外情報
try:
    例外が発生する可能性のあるコード
例外 例外:
    異常実行されたコードが発生しました
 
Exception は共通例外クラスの親クラスです
ZeroDivisionError-->ArithmeticError-->Exception-->BaseException-->object 
ValueError-->Exception-->BaseException-->object

異常な完全な構造
try:
    例外が発生する可能性があります例外以外のコード
:
    例外が発生して実行されるコード
else:
    例外が発生しないコード
finally:
例外
    の有無に関係なく実行される
、または例外キャプチャ
1. try のネスト内
    try がネストされている場合、内部の Try が例外をキャッチしない場合、外部の Try が例外を受信して​​処理し、
それでも外部の Try が例外をキャッチできない場合は、配信します。
インポート時間
try: 
    f = open('test.txt') 
    try: 
        while True: 
            content = f.readline()
 
            if len(content) == 0: 
                Break
            time.sleep(2) 
            print(content) 
    Final: 
        f.close() 
        print('ファイルを閉じる')
例外: 
    print("そのようなファイルはありません") 2.
入れ子関数
    内の関数で例外が発生した場合たとえば、関数 A-->関数 B-->関数 C を呼び出し、関数 C で例外が生成された場合、
例外が関数 C で処理されない場合、例外は関数 B に渡されます。 B に例外処理がある場合は
関数 B の処理方法に従って実行され、関数 B に例外処理がない場合は例外が渡され続けます。
すべての関数が処理されない場合、この時点でデフォルトの例外処理が実行されます。つまり、通常見られるように、
def test1(): 
        print("----test1-1----") 
        print( num) 
        print("----test1-2----") 
    def test2(): 
        print("----test2-1----") 
        test1() 
        try:
    def test3(): 
            test1() 
            print("----test3-2----")
        例外 結果として例外: 
            print("例外がキャッチされました。情報は次のとおりです: %s"%result) 
        print(" -- --test3-2----") 
    test3() 
    print("------素晴らしい分割線-----") 
    test2()

カスタム例外をスローします
    raise ステートメントは例外
    例外/エラーを発生させますオブジェクトには名前が必要です。Error
    または Exception のサブクラスである必要があります。 
1. カスタム例外クラス、Exception または BaseException を継承します。
2. 書き込みを選択し、__init__、__str__ メソッドを定義します
。 3. 適切なタイミングで例外オブジェクトをスローします


class PasswardLengthError (例外): 
    pass 
def get_passward(): 
    passward=input('パスワードを入力してください') 
    if len(passward)>=6:
        print('修飾されたパスワードの長さ') 
    else:
        raise PasswardLengthError('パスワードの長さが 6 文字に足りません') 
try: 
    get_passward()
例外 PasswardLengthError: 
    print('パスワードの長さが 6 文字に足りません')

おすすめ

転載: blog.csdn.net/m0_46493223/article/details/126090975