I'm trying to define my own (very simple) exception class in Python 2.6, but no matter how I do it I get some warning.
First, the simplest way:
class MyException(Exception): pass
This works, but prints out a warning at runtime: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6 OK, so that's not the way. I then tried:
class MyException(Exception): def __init__(self, message): self.message = message
This also works, but PyLint reports a warning: W0231: MyException.__init__: __init__ method from base class 'Exception' is not called
. So I tried calling it:
class MyException(Exception): def __init__(self, message): super(Exception, self).__init__(message) self.message = message
This works, too! But now PyLint reports an error: E1003: MyException.__init__: Bad first argument 'Exception' given to super class
How the hell do I do such a simple thing without any warnings?
A good rule of thumb is to limit use of bare 'except' clauses to two cases: If the exception handler will be printing out or logging the traceback; at least the user will be aware that an error has occurred. If the code needs to do some cleanup work, but then lets the exception propagate upwards with raise . try...
Catching Exceptions in Python In Python, exceptions can be handled using a try statement. The critical operation which can raise an exception is placed inside the try clause. The code that handles the exceptions is written in the except clause.
When you call super
, you need the subclass/derived class as the first argument, not the main/base class.
From the Python online documentation:
class C(B): def method(self, arg): super(C, self).method(arg)
So your exception would be defined as follows:
class MyException(Exception): def __init__(self, message): super(MyException, self).__init__(message) self.message = message
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With