Python の印刷例外

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>

出力:

2023-10-16-12-36-50 のスクリーンショット

印刷の例外

例外が正確に何であるか、その外観と処理方法を確認したので、次は例外を印刷する方法を見ていきます。

例外を出力するには、次を使用します。 'として' 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