例外が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>)
-
Pythonで例外を発生させる方法は?
raiseキーワードを使用して、強制的に例外を発生させることができます。 「raise」メソッドを呼び出すための構文は次のとおりです。 raise [Exception [, args [, traceback]]] ここで、Exceptionは例外の名前です。オプションの「args」は、例外引数の値を表します。 また、オプションの引数であるtracebackは、例外に使用されるtracebackオブジェクトです。 #raise_error.py try: i = int ( input ( "Enter a positive integer value: " )
-
Python関数が例外をスローすることをどのようにテストしますか?
関数が予期された例外をスローしない場合にのみ失敗する単体テストを記述します。 Python関数が例外をスローするかどうかもテストします。 たとえば、Pythonの型安全性をテストするためにPythonシェルに貼り付けるサンプルコードを参照してください。 例 import unittest class MyTestCase(unittest.TestCase): def test_1_cannot_add_int_and_str(self): with self.assertRaises(TypeError):