Python の印刷例外
例外は、プログラムの実行中に発生する予期しないイベントです。実行時エラーとも呼ばれます。このエラーが発生すると、Python は実行中に例外を生成しますが、これは処理できるため、プログラムが中断されるのを防ぎます。この記事では、「Python で例外を出力するにはどうすればよいですか?」に焦点を当てます。
Pythonの例外とは何ですか?
で パイソン , 例外とは、プログラムにおけるエラーの一種です。プログラムが構文的に正しいにもかかわらず、実行中にエラーが発生した場合、エラーは「例外」と呼ばれます。
例 : この例では、数値をゼロで除算しようとしているため、実行時エラーが発生します。
Python3
num1> => 5> num2> => 0> print> (num1> /> num2)> |
出力
Traceback (most recent call last): File 'Solution.py', line 5, in print(num1 / num2) ZeroDivisionError : division by zero
このプログラムは構文的に正しいです 。ここでの唯一の問題は、操作に使用される数値によるものです。数値を 0 で割ることはできないため、エラーがスローされます。したがって、これは「例外」の例です。
例外とはどのようなものですか?
上記のプログラムを実行すると、例外が発生しました。スローされたエラーには、エラーが発生した行、正確な行、およびエラー タイプが表示されます。
表示されたエラーの種類は「例外」と呼ばれます。例外を通して、私たちは発生した問題を知ることになります。上記のプログラムの例外は次のとおりです。 ZeroDivisionError: ゼロ除算 。
例 : ここで、変数 var1 の割り当ては、 未定義の変数 、var2。
Python3
var1> => var2> |
出力
Traceback (most recent call last): File 'Solution.py', line 2, in var1 = var2 NameError: name 'var2' is not defined
上記では、例外が次のように表示されます。 NameError: 名前「var2」が定義されていません 。
Python での例外処理
例外は時々非常に面倒になることがあります。ここで、例外処理の概念が登場します。例外処理を使用すると、単にユーザーにエラーをスローするのではなく、ユーザーの例外を簡単に処理できます。
例 : このプログラムでは、入力は「int」型で取得されます。ただし、そこに文字を入力すると、「ValueError」がスローされます。これにより、ユーザーは多くの場合混乱する可能性があります。ここで例外処理を行います。値エラーをスローしてユーザーを混乱させる代わりに、ユーザーに再試行を提案するステートメントを表示し、ユーザーに数値を再度入力する機会を与えます。
Python3
num1> => int> (> input> (> 'Enter num1: '> ))> num2> => int> (> input> (> 'Enter num2: '> ))> answer> => f> '{num1} / {num2} = {num1 / num2}'> print> (answer)> |
出力
Enter num1: 1 Enter num2: b Traceback (most recent call last): File 'D:/PycharmProjects/pythonProject2/main.py', line 15, in num2 = int(input('Enter num2: ')) ValueError: invalid literal for int() with base 10: 'b' try、excel、else の使用
このコードでは、入力が正しい方法で与えられるまでユーザーに試行させたいため、while ループが実行されます。「try」句を使用しています。 try 句は、その句内の行のエラーをチェックします。
例外が発生した場合は、「例外」句にジャンプし、提供されたエラー メッセージを出力します。 2 つの例外句を作成しました。1 つは ValueError で、もう 1 つは ZeroDivisionError です。これらの各節はそれぞれの例外を処理し、それぞれのメッセージを出力します。
そして最後にelse句を書きました。エラーが発生しない場合は、else ブロックが実行されます。 else ブロックでは、除算の商を出力し、ループから抜け出します。
Python3
while> True> :> > try> :> > num1> => int> (> input> (> 'Enter num1: '> ))> > num2> => int> (> input> (> 'Enter num2: '> ))> > answer> => f> '{num1} / {num2} = {num1 / num2}'> > except> ValueError as e:> > print> (> 'Try putting an integer value.
Error Occured:'> , e)> > except> ZeroDivisionError as ex:> > print> (> 'Division by zero is invalid!
Error Occured:'> , ex)> > else> :> > print> (answer)> > break> |
出力:
印刷の例外
例外が正確に何であるか、その外観と処理方法を確認したので、次は例外を印刷する方法を見ていきます。
例外を出力するには、次を使用します。 'として' Pythonのキーワード。
以前に使用したのと同じ例を使用しました。 「as」キーワードを使用し、「ValueError」の変数「ve」と「ZeroDivisionError」の変数「zde」を宣言しました。次に、例外が発生した場合に、その例外を出力するコードを作成しました。しかし、それでも、取得した例外のタイプを確認することはできません。
Python3
while> True> :> > try> :> > num1> => int> (> input> (> 'Enter num1: '> ))> > num2> => int> (> input> (> 'Enter num2: '> ))> > answer> => f> '{num1} / {num2} = {num1 / num2}'> > except> ValueError as ve:> > print> (ve)> > except> ZeroDivisionError as zde:> > print> (zde)> > else> :> > print> (answer)> > break> |
出力:
Enter num1: a invalid literal for int() with base 10: 'a' Enter num1: 0 Enter num2: 0 division by zero Enter num1: 16 Enter num2: 4 16 / 4 = 4.0
印刷例外の種類
例外のタイプを確認するには、type() 関数を使用できます。
ここでは、コードの実行中に発生した例外のタイプを知るために type() 関数を使用しました。
Python3
while> True> :> > try> :> > num1> => int> (> input> (> 'Enter num1: '> ))> > num2> => int> (> input> (> 'Enter num2: '> ))> > answer> => f> '{num1} / {num2} = {num1 / num2}'> > except> ValueError as ve:> > print> (> type> (ve), ve)> > except> ZeroDivisionError as zde:> > print> (> type> (zde), zde)> > else> :> > print> (answer)> > break> |
出力
Enter num1: a invalid literal for int() with base 10: 'a' Enter num1: 1 Enter num2: 0 division by zero Enter num1: 4 Enter num2: 2 4 / 2 = 2.0