試してみてください... Pythonでの例外処理を除いて

例外処理試行...例外

Pythonコードを書くとき、特定の理由の特定の分析のためにコードが間違っている場合があります。エラーを修正するために、エラーの理由を知る必要がある場合があります。

次の例は、Pythonのエラーを示しています

1.構文エラー

# 例1
if 2>1
    print(2222)
    
# 例2   
dic = {
    
    "name";"alex"}
tu = (2,3,4''6)

# 错误提示:SyntaxError: invalid syntax

2.論理エラー

dic = {
    
    "name":"海狗","age":18}
dic["hobby"]

# 错误提示:KeyError: 'hobby'

一般的に使用されるのは異常な判断を行う場合ですが、以下では例としてtryを使用します。

単一のブランチ:

try:
    num = int(input(">>>")) #出现value错误之后,直接跳转except语句
    print(111)
except ValueError:
    print(666)

# >>>a
# 666
try:
    dic = {
    
    "name":"嘉欣"}
    print(dic["age"])
    num = int(input(">>>"))  # 出现value错误之后,直接跳转except语句
    print(111)
except ValueError:
    print(666)

# KeyError: 'age'

try:
    dic = {
    
    "name":"嘉欣"}
    print(dic["age"])
    num = int(input(">>>"))  # 出现value错误之后,直接跳转except语句
    print(111)
except KeyError:
    print(666)

# 666 

複数のブランチ:

try:
    num = int(input(">>>"))  # 出现value错误之后,直接跳转except语句
    dic = {
    
    "name": "嘉欣"}
    #print(dic["age"])
    l1 = [1,2]
    print(l1[100])
except ValueError:
    print("输入的有非数字元素")
except KeyError:
    print("没有此键")
except IndexError:
    print("没有此下标")
print(666)

# >>>1233
# 没有此键
# 666

# >>>asd
# 输入的有非数字元素
# 666

# >>>123
# 没有此下标
# 666

1つの例外:

try:
    dic = {
    
    "name": "嘉欣"}
    # print(dic["age"])
    l1 = [1,2]
    print(l1[100])
    print(111)
    for i in 123:
        pass
except Exception as e: # Exception 会将错误报出来
    print(e)

# 'age'
# list index out of range
# 'int' object is not iterable

マグナムを使用するのはいつですか?複数のブランチを使用するのはいつですか?

エラーメッセージを気にせず、エラーを排除してプログラムの実行を継続したい場合は、ユニバーサル例外を使用してください

しかし、一般的にコードを書いてください...すべての段落にtryを追加しないでください...それはそれについて心配していませんか?

マルチブランチプラスユニバーサル

def func():
    pass
def func1():
    pass

dic = {
    
    
    1:func,
    2:func1,
}

try:
    num= int(input("请输入序号"))
    dic[num]()
except ValueError:
    print("请输入数字")
except KeyError:
    print("请输入范围内的序号")
except Exception:
    print("程序出现意料之外的错误....")

# 请输入序号456
# 请输入范围内的序号

# 请输入序号asfd
# 请输入数字

# 请输入序号1

最後に構造を試してみてください:

try:
    dic = {
    
    "name": "嘉欣"}
    #print(dic["age"])
    l1 = [1,2]
    # print(l1[100])
    print(111)
except ValueError:
    print("输入的有非数字元素")
except KeyError:
    print("没有此键")
else:
    print("如果没有出现异常则执行这里")
finally:
    print("finally 666")

# 没有此键
# finally 666

# finally 666
# IndexError: list index out of range

# 111
# 如果没有出现异常则执行这里
# finally 666

# 如果将except都注释掉
try:
    dic = {
    
    "name": "嘉欣"}
    # print(dic["age"])
    l1 = [1,2]
    # print(l1[100])
    print(111)
# except ValueError:
#     print("输入的有非数字元素")
# except KeyError:
#     print("没有此键")
# else:
#     print("如果没有出现异常则执行这里")
finally:
    print("finally 666")

# 111
# finally 666

例外はtryに依存する必要がありますelseはexceptに依存し、tryfinallyは
tryfinallyのみに依存する必要があります
:例外が発生する前に、finallyの実行を
使用してデータベース接続を閉じ、ファイルハンドルを閉じ、データを保存します。 、ついに使用されます

with open("teat1",encoding="utf-8",mode="a+") as f1:
    try:
        for i in f1:
            print(i)
        if ....:
    finally:
        f1.close()
# SyntaxError: invalid syntax
def func():
    try:
        print(111)
        return 666
    finally:
        print(22)
print(func())

# 111
# 22
# 666

関数の戻りの終わりの前に、finallyコードを実行します

while 1:
    try:
        print(1)
        break
    finally:
        print(222)

# 1
# 222

休憩する前に、最後にコードを実行します

例外をアクティブにトリガーします。

raise ValueError("出现了value错误")

# ValueError: 出现了value错误

アサーション:厳しい態度を示す

name = "1"
n1 = input("请输入:")
assert name == n1
print(111)
print(222)

# 请输入:as
# AssertionError

#请输入:1
# 111
# 222

カスタム例外:
Pythonで提供されるエラーには多くの種類がありますが、すべてのエラーではありません。一部のエラーでは、カスタマイズが必要です。

class LiYeError(BaseException):
    def __init__(self,msg):
        self.msg=msg
    def __str__(self):
        return self.msg

try:
    raise LiYeError('类型错误')
except LiYeError as e:
    print(e)

# 类型错误

上記、お役に立てれば幸いです〜

おすすめ

転載: blog.csdn.net/m0_50481455/article/details/113267613