home *** CD-ROM | disk | FTP | other *** search
/ Enter 2004 April / enter-2004-04.iso / files / EVE_1424_100181.exe / ccp_exceptions.py < prev    next >
Encoding:
Python Source  |  2004-04-20  |  3.5 KB  |  118 lines

  1. import exceptions
  2. import types
  3.  
  4. # The following classes are original CCP products
  5.  
  6.  
  7. #---------------------------------------------------------------------------------
  8. class UserError(Exception):
  9.     """User information"""
  10.     __guid__ = 'exceptions.UserError'
  11.     __persistvars__ = ['args','dict','msg']
  12.  
  13.  
  14.     #---------------------------------------------------------------------------------
  15.     def __init__(self, msg = None, *args):
  16.         if type(msg) == types.InstanceType and msg.__class__ == UserError:
  17.             self.msg = msg.msg
  18.             self.dict = msg.dict
  19.             self.args = (self.msg, self.dict)
  20.             return
  21.  
  22.         if type(msg) not in [types.StringType, types.NoneType]:
  23.             raise RuntimeError("Invalid argument, msg must be a string", msg)
  24.  
  25.         self.msg = msg
  26.         if len(args) and type(args[0]) == type({}):
  27.             self.dict = args[0]
  28.             self.args = (self.msg, self.dict)
  29.         else:
  30.             self.dict = None
  31.             self.args = (self.msg, ) + args
  32.  
  33.  
  34.     #---------------------------------------------------------------------------------
  35.     def __str__(self):
  36.         try:
  37.             msg = cfg.GetMessage(self.msg, self.dict)
  38.             return "[%s] %s - %s" % (msg.type, msg.title, msg.text)
  39.         except:
  40.             return "User error, msg=%s, dict=%s" % (self.msg, self.dict)
  41.  
  42.  
  43.  
  44. #---------------------------------------------------------------------------------
  45. class SQLError(Exception):
  46.     __guid__ = 'exceptions.SQLError'
  47.  
  48.  
  49.     #---------------------------------------------------------------------------------
  50.     def __init__(self, source, server, sql, procname, lineno, paramErrors, colErrors, errorRecords):
  51.         self.source = source
  52.         self.server = server
  53.         self.sql = sql
  54.         self.procname = procname
  55.         self.lineno = lineno
  56.         self.paramErrors = paramErrors # [colidx, colname, status, statusStr, type, typeStr]
  57.         self.colErrors = colErrors  # [colidx, colname, status, statusStr]
  58.         self.errorRecords = errorRecords  # [descr, ansicode, nativecode, state, class]
  59.         self.procParams = []
  60.  
  61.  
  62.     #---------------------------------------------------------------------------------
  63.     def __str__(self):
  64.         return """
  65. Source: %s
  66. Server: %s
  67. SQL:    %s
  68. Proc.:  %s(%s)
  69.  
  70. ParamErrors: %s
  71. ColErrors:   %s
  72. ErrorRecs:   %s
  73. Parameters:  %s""" % (
  74.             self.source,
  75.             self.server,
  76.             self.sql,
  77.             self.procname,
  78.             self.lineno,
  79.             self.paramErrors,
  80.             self.colErrors,
  81.             self.errorRecords,
  82.             self.procParams
  83.             )
  84.  
  85.  
  86. #---------------------------------------------------------------------------------
  87. class UnmarshalError(Exception):
  88.     __guid__ = 'exceptions.SQLError'
  89.  
  90.  
  91.     #---------------------------------------------------------------------------------
  92.     def __init__(self, exception, size, pos, crc):
  93.         self.exception = exception
  94.         self.size = size
  95.         self.pos = pos
  96.         self.crc = crc
  97.  
  98.  
  99.     #---------------------------------------------------------------------------------
  100.     def __str__(self):
  101.         return """
  102. Exception:  %s
  103. Pikl size:  %s
  104. Pikl pos.:  %s
  105. CRC:        %s""" % (self.exception, self.size, self.pos, self.crc)
  106.  
  107.  
  108.  
  109.  
  110. # Put the custom exceptions into builtins
  111. import __builtin__
  112. __builtin__.UserError = UserError
  113. __builtin__.SQLError = SQLError
  114. __builtin__.UnmarshalError = UnmarshalError
  115.  
  116.  
  117.  
  118.