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

例を使用したPythonでのユーザー定義の例外


Pythonは、コードが異常に動作し、その実行が突然停止するたびに、エラーと例外をスローします。 Pythonは、try-exceptステートメントを使用した例外処理メソッドを使用して、このようなシナリオを処理するためのツールを提供します。検出されるいくつかの標準的な例外には、ArithmeticError、AssertionError、AttributeError、ImportErrorなどがあります。

ユーザー定義の例外クラスの作成

ここでは、新しい例外クラス、つまりUser_Errorを作成しました。例外は、直接または間接的に、組み込みのExceptionクラスから派生させる必要があります。与えられたクラス内にコンストラクターとdisplayメソッドを含む与えられた例を見てみましょう。

# class MyError is extended from super class Exception
class User_Error(Exception):
   # Constructor method
   def __init__(self, value):
      self.value = value
   # __str__ display function
   def __str__(self):
      return(repr(self.value))
try:
   raise(User_Error("User defined error"))
   # Value of Exception is stored in error
except User_Error as error:
   print('A New Exception occured:',error.value)
としてerrorexceptに格納されます。

出力

A New Exception occured: User defined error

ユーザー定義の例外クラスの作成(多重継承)

派生クラスの例外は、単一のモジュールが複数の異なるエラーを処理するときに作成されます。ここでは、そのモジュールによって定義された例外の基本クラスを作成しました。この基本クラスは、さまざまなタイプのエラーを処理するために、さまざまなユーザー定義クラスに継承されます。

# define Python user-defined exceptions
class Error(Exception):
   """Base class for other exceptions"""
   pass
class Dividebyzero(Error):
   """Raised when the input value is zero"""
   pass
try:
   i_num = int(input("Enter a number: "))
   if i_num ==0:
      raise Dividebyzero
except Dividebyzero:
   print("Input value is zero, try again!")
   print()

出力

Enter a number: Input value is zero, try again!

ユーザー定義の例外クラス(標準の例外)の作成

ランタイムエラーは、生成されたエラーが上記のカテゴリに分類されない場合に発生する組み込みクラスです。以下のプログラムは、実行時エラーを基本クラスとして使用し、ユーザー定義エラーを派生クラスとして使用する方法を説明しています。

# User defined error
class Usererror(RuntimeError):
   def __init__(self, arg):
      self.args = arg
try:
   raise Usererror("userError")
except Usererror as e:
   print (e.args)

出力

('u', 's', 'e', 'r', 'E', 'r', 'r', 'o', 'r')

結論

この記事では、Python3.xでユーザー定義の例外を宣言して実装する方法を学びました。またはそれ以前。


  1. Pryでの例外の処理

    あなたが私のようなら、あなたはRailsコンソールをよく使います。そして今では、PryがRailsコンソールに起こる最良のことであることに誰もが同意していると思います...まあ、これまで。 組み込みのこじ開けは、昔ながらのIRBに比べて、例外を除いて作業をはるかに簡単にするいくつかの非常に優れた機能です。 完全なバックトレースを表示 Pry(またはそのことについてはIRB)で例外が発生すると、バックトレースの短縮バージョンが表示されます。通常はこれで十分ですが、常にそうとは限りません。 pryでは、wtf -vコマンドを使用して、最新の例外の完全なバックトレースを確認できます。 -vフラ

  2. Rubyのカスタム例外

    Rubyで独自の例外を作成するのは簡単です。次の手順に従ってください: 1。新しいクラスを作成する 例外は、Rubyの他のすべてと同じように、クラスです。新しい種類の例外を作成するには、StandardErrorまたはその子の1つから継承するクラスを作成するだけです。 class MyError < StandardError end raise MyError 慣例により、新しい例外のクラス名は「エラー」で終わります。カスタム例外をモジュール内に配置することもお勧めします。つまり、最終的なエラークラスは次のようになります:ActiveRecord::RecordNotFound