This wiki is in the process of being archived due to lack of usage and the resources necessary to serve it — predominately to bots, crawlers, and LLM companies. Edits are discouraged.
Pages are preserved as they were at the time of archival. For current information, please visit python.org.
If a change to this archive is absolutely needed, requests can be made via the infrastructure@python.org mailing list.

Writing Exception Classes

Exception classes are not special, you just derive them from Exception:

   1 class HostNotFound(Exception):
   2     def __init__( self, host ):
   3         self.host = host
   4         Exception.__init__(self, 'Host Not Found exception: missing %s' % host)

You may later write:

   1 try:
   2     raise HostNotFound("taoriver.net")
   3 except HostNotFound, exc:
   4     # Handle exception.
   5     print exc  # -> 'Host Not Found exception: missing taoriver.net'
   6     print exc.host  # -> 'taoriver.net'

See Also

HandlingExceptions, TracebackModule

Questions

Using Python 2.3:

   1 class LocalNamesSyntaxError(Exception):
   2     def __init__(self, msg):
   3         self.msg=msg
   4         super(LocalNamesSyntaxError, self).__init__('Local Names v1.1 Syntax Error: %s' % msg)

Traceback (most recent call last):
  File "parser.py", line 92, in ?
    pprint.pprint(parse_text(test_string))
  File "parser.py", line 69, in parse_text
    cursor=parse_record_type(cursor,line,results)
  File "parser.py", line 43, in parse_record_type
    raise LocalNamesSyntaxError("unrecognized v1.1 record type- require LN, NS, X, or PATTERN")
  File "parser.py", line 17, in __init__
    super(LocalNamesSyntaxError, self)('Local Names v1.1 Syntax Error: %s' % msg)
TypeError: super() argument 1 must be type, not classobj