異常な
目的
- 異常な概念
- キャッチ例外
- 異常な出産
- 例外をスローする
01.例外の概念
- プログラムの実行中にPythonインタープリターでエラーが発生すると、プログラムの実行が停止し、いくつかのエラーメッセージが表示されます。これは例外です。
- プログラムの実行を停止し、エラーメッセージを表示するアクションは、通常、次のように呼ばれます。例外を発生させる
プログラムを開発する場合、すべての特殊な状況に対処することは困難です。例外をキャプチャすることにより、プログラムの安定性と堅牢性を確保するために、緊急事態に集中的に対処することができます。
02.例外をキャッチする
2.1例外をキャッチするための単純な構文
- プログラム開発では、一部のコードの実行が正しいかどうかわからない場合は、try(試行)を追加して例外をキャッチできます。
- 例外をキャッチするための最も単純な構文形式:
try:
尝试执行的代码
except:
出现错误的处理
- 試してみて、以下で試してみるコードを書いてください。正常に実行できるかどうかわかりません。
- そうでない場合を除いて、失敗したコードを以下に記述します
単純な例外キャプチャウォークスルー-ユーザーに整数の入力を要求する
try:
# 提示用户输入一个数字
num = int(input("请输入数字:"))
except:
print("请输入正确的数字")
2.2エラータイプのキャプチャ
- プログラムを実行すると、さまざまな種類の例外が発生する可能性があり、さまざまな種類の例外に対応する必要があります。このとき、エラーの種類をキャプチャする必要があります。
- 構文は次のとおりです。
try:
# 尝试执行的代码
pass
except 错误类型1:
# 针对错误类型1,对应的代码处理
pass
except (错误类型2, 错误类型3):
# 针对错误类型2 和 3,对应的代码处理
pass
except Exception as result:
print("未知错误 %s" % result)
- Pythonインタープリターが例外をスローすると、エラーメッセージの最後の行の最初の単語がエラータイプになります
例外タイプのキャプチャウォークスルー-ユーザーに整数の入力を要求する
要求する
ユーザーに整数の入力を求めます
。8をユーザーが入力した整数で割り、出力します。
try:
num = int(input("请输入整数:"))
result = 8 / num
print(result)
except ValueError:
print("请输入正确的整数")
except ZeroDivisionError:
print("除 0 错误")
不明なエラーをキャプチャする
- 開発中に、起こりうるすべてのエラーを予測する必要がありますが、それでもある程度の難易度です
。Pythonインタープリターが例外をスローしたためにプログラムが終了しないようにする場合は、別の例外を追加できます。 - 構文は次のとおりです。
except Exception as result:
print("未知错误 %s" % result)
2.3例外キャプチャの完全な構文
- 実際の開発では、複雑な例外を処理できるようにするために、完全な例外構文は次のとおりです。
促す:
- 完全な文法の適用シナリオは、実際の事例と組み合わせた追跡調査でよりよく理解されます。
- これで、最初にこの文法構造の印象を得ることができます
try:
# 尝试执行的代码
pass
except 错误类型1:
# 针对错误类型1,对应的代码处理
pass
except 错误类型2:
# 针对错误类型2,对应的代码处理
pass
except (错误类型3, 错误类型4):
# 针对错误类型3 和 4,对应的代码处理
pass
except Exception as result:
# 打印错误信息
print(result)
else:
# 没有异常才会执行的代码
pass
finally:
# 无论是否有异常,都会执行的代码
print("无论是否有异常,都会执行的代码")
- それ以外の場合、例外がない場合にのみ実行されるコード
f *例外があるかどうかに関係なく実行されるコード
例外を完全にキャッチするコードは次のとおりです。
try:
num = int(input("请输入整数:"))
result = 8 / num
print(result)
except ValueError:
print("请输入正确的整数")
except ZeroDivisionError:
print("除 0 错误")
except Exception as result:
print("未知错误 %s" % result)
else:
print("正常执行")
finally:
print("执行完成,但是不保证正确")
03.異常な出産
- 例外の送信-関数/メソッドの実行中に例外が発生すると、その例外は関数/メソッドの呼び出し側に渡されます
- メインプログラムに渡されても例外処理がない場合、プログラムは終了します
促す
- 開発では、main関数に例外キャプチャを追加できます
- main関数で呼び出された他の関数は、例外がある限り、main関数の例外キャプチャに渡されます。
- このように、コードに多くの例外キャプチャを追加する必要はありません。これにより、コードのクリーン性を確保できます。
要求する
- 関数demo1()を定義して、ユーザーに整数を入力して返すように促します
- 関数demo2()を定義してdemo1()を呼び出します
- メインプログラムでdemo2()を呼び出す
def demo1():
return int(input("请输入一个整数:"))
def demo2():
return demo1()
try:
print(demo2())
except ValueError:
print("请输入正确的整数")
except Exception as result:
print("未知错误 %s" % result)
04.例外を発生させる
4.1アプリケーションシナリオ
- 開発では、コード実行エラーを除いて、Pythonインタープリターは例外をスローします
- また、アプリケーションの特定のビジネスニーズに応じて、積極的に例外をスローすることもできます。
例
パスワードの入力をユーザーに求めます。長さが8未満の場合は、例外をスローします。
注意
-
現在の機能は、ユーザーにパスワードの入力を求めることのみを担当します。パスワードの長さが正しくない場合は、追加の処理のために他の機能が必要です。
-
したがって、例外がスローされたり、処理が必要な他の関数によって例外がキャッチされたりする可能性があります。
4.2例外をスローする
- Pythonは例外例外クラスを提供します
- 開発中に、特定のビジネス要件を満たすときに例外をスローする場合は、次のことができ
ます。Exceptionオブジェクトの作成
raiseキーワードを使用して、例外オブジェクトをスローします。
要求する
- input_password関数を定義して、ユーザーにパスワードの入力を求めます
- ユーザー入力の長さが8未満の場合、例外をスローします
- ユーザー入力の長さが8より大きい場合は、入力パスワードを返します
def input_password():
# 1. 提示用户输入密码
pwd = input("请输入密码:")
# 2. 判断密码长度,如果长度 >= 8,返回用户输入的密码
if len(pwd) >= 8:
return pwd
# 3. 密码长度不够,需要抛出异常
# 1> 创建异常对象 - 使用异常的错误信息字符串作为参数
ex = Exception("密码长度不够")
# 2> 抛出异常对象
raise ex
try:
user_pwd = input_password()
print(user_pwd)
except Exception as result:
print("发现错误:%s" % result)