Whenever an error or exception occurs in a python program, it itself throws standard expressions for those errors. But apart from these, we can also throw user defined expressions by customizing exception classes.


Customizing Exception Classes in Python
With the help of the code given below, we can get an overview of customizing exception classes in Python.
Code –
help(Exception)
Output –
Help on class Exception in module exceptions:
class Exception(BaseException)
| Common base class for all non-exit exceptions.
|
| Method resolution order:
| Exception
| BaseException
| __builtin__.object
|
| Methods defined here:
|
| __init__(…)
| x.__init__(…) initializes x; see help(type(x)) for signature
|
| ———————————————————————-
| Data and other attributes defined here:
|
| __new__ = <built-in method __new__ of type object>
| T.__new__(S, …) -> a new object with type S, a subtype of T
|
| ———————————————————————-
| Methods inherited from BaseException:
|
| __delattr__(…)
| x.__delattr__(‘name’) <==> del x.name
|
| __getattribute__(…)
| x.__getattribute__(‘name’) <==> x.name
|
| __getitem__(…)
| x.__getitem__(y) <==> x[y]
|
| __getslice__(…)
| x.__getslice__(i, j) <==> x[i:j]
|
| Use of negative indices is not supported.
|
| __reduce__(…)
|
| __repr__(…)
| x.__repr__() <==> repr(x)
|
| __setattr__(…)
| x.__setattr__(‘name’, value) <==> x.name = value
|
| __setstate__(…)
|
| __str__(…)
| x.__str__() <==> str(x)
|
| __unicode__(…)
|
| ———————————————————————-
| Data descriptors inherited from BaseException:
|
| __dict__
|
| args
|
| message
Creating a user defined exception class in Python-
We can create our user-defined exception class but this needs to be derived from the built-in ones directly or indirectly.
Let’s will understand this with the help of the example given below –
class User_deferror(Exception): def __init__(self, value): self.value = value def __str__(self): return(repr(self.value)) try: raise(User_deferror("New User defined error")) except User_deferror as error: print('A New Exception occurred:',error.value)
Output –
A New Exception occurred: New User defined error
Creating a User-Defined Exception Class (Multiple Inheritance) –
When a single module handles multiple errors, then derived class exceptions are created. The base class is inherited by various user-defined classes to handle different types of errors.
Let’s understand this with the help of the example given below-
class User_def(Exception): """Base class for further exceptions""" pass class Dividebyzero(User_def): """Raised when the input value is zero""" pass try: i_num = int(input("Input your number: ")) if i_num ==0: raise Dividebyzero except Dividebyzero: print("Input value is zero,which will result an error") print()
Output –
Enter a number: Input value is zero,which will result an error
Further, we can also create exceptions by using runtime error as a base class and user-defined error as a derived class.
Let’s understand this with the help of the example given below –
class Usererror(RuntimeError): def __init__(self, arg): self.args = arg try: raise Usererror("userDefError") except Usererror as e: print (e.args)
Output –
('u', 's', 'e', 'r', ‘D’, ‘e’, ‘f’, 'E', 'r', 'r', 'o', 'r')
In this article, we learned how can we create user-defined exceptions in python apart from the standard ones.
Attempt free Python Online Test
Python Exception Basics MCQ Test
Python Exception Coding MCQ Test