Python
 Computer >> コンピューター >  >> プログラミング >> Python

例外がPythonのオブジェクトであることをどのように説明しますか?


はい、指定されたコードでは「err」は例外オブジェクトです。

Pythonでは、すべてがオブジェクトです。そして、すべてのオブジェクトには属性とメソッドがあります。したがって、リスト、関数、タプルなどのような例外もオブジェクトです。したがって、例外にも他のオブジェクトと同様の属性があります。これらの属性は、次のように設定およびアクセスできます。基本クラスの例外があり、他のほとんどすべての例外はサブクラスです。 eが例外オブジェクトの場合、e.argsとe.messageがその属性です。

現在のPython実装では、例外はタイプ、値、トレースバックの3つの部分で構成されています。 sysモジュールは、現在の例外オブジェクトを3つの変数、exc_type、exc_value、およびexc_tracebackで記述します。

sys.exc_info()関数は、これら3つの属性のタプルを返し、raiseステートメントには、これら3つの部分を受け入れる3つの引数形式があります。

与えられたコードは次の出力を与えます

(<type 'exceptions.ValueError'>, ValueError('could not convert
string to int: Godzilla!',), <traceback object at 0x0000000002E33748>)


  1. Pythonで例外を発生させる方法は?

    raiseキーワードを使用して、強制的に例外を発生させることができます。 「raise」メソッドを呼び出すための構文は次のとおりです。 raise [Exception [, args [, traceback]]] ここで、Exceptionは例外の名前です。オプションの「args」は、例外引数の値を表します。 また、オプションの引数であるtracebackは、例外に使用されるtracebackオブジェクトです。 #raise_error.py try: i = int ( input ( "Enter a positive integer value: " )

  2. Python関数が例外をスローすることをどのようにテストしますか?

    関数が予期された例外をスローしない場合にのみ失敗する単体テストを記述します。 Python関数が例外をスローするかどうかもテストします。 たとえば、Pythonの型安全性をテストするためにPythonシェルに貼り付けるサンプルコードを参照してください。 例 import unittest class MyTestCase(unittest.TestCase):    def test_1_cannot_add_int_and_str(self):       with self.assertRaises(TypeError):