Python用户定义的异常处理

时间:2016-05-14 09:05:49

标签: python-2.7 exception error-handling

我需要一些帮助来理解我在python 2.7.11中使用用户定义的异常的问题。

我有两个文件 main.py myErrors.py .in main 我发布数据并收到回复并且在 myErrors 我处理错误。

我要做的是在try:except语句中执行版本错误,但即使它应该是也不会执行。我正在做的是我将响应传递给myErrors并将该数据更新到错误文件中的字典.-

我的问题很严厉。我想要做的是,将响应传递给错误处理程序,但我不想执行它,直到我们到达on_response方法中的Try:except子句。因此,当我们得到响应并且它不成功时,请检查错误代码并引发异常。现在我正在做的是先检查错误,然后执行成功检查(错误代码)

这是主要

def send_messages(self):
  response = cm.postData(url=simulateSasServer, jsondata=json_data)
  self.on_response(response)

def on_response(self, response):
myERRORS.myERRORS(response)
    # if registration is succesful change state to REGISTERED.
    if 'registrationResponse' in response:
        try:
            responseObjects = response['registrationResponse']
            for responseObject in responseObjects:
                if responseObject['error']['errorCode'] == 0:
                    do_action
        except myErrors.Version():
            raise ("version_message")

这是 myErrors

class myERRORS(Exception):

error_code = {'SUCCESS': 0,
              'VERSION': 100,
              }

response_data = {}

def __init__(self, response):
    self.response_data.update(response)



class Version(myERRORS):

def __init__(self):
    self.name = "VERSION"
    self.err_code = self.error_code['VERSION']
    self.msg = "SAS protocol version used by CBSD is not supported by SAS"
    self.version_error()
    if self.version_error() is True:
        print (self.name, self.err_code, self.msg)
        raise Exception(self.name, self.err_code, self.msg)

def version_error(self):
    response_objects = self.response_data.values()[0]
    if 'registrationResponse' in self.response_data:
        for r_object in response_objects:
            if r_object['error']['errorCode'] == self.error_code['VERSION']:
                return True

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

关于例外并没有什么特别之处。他们是班级。你所做的是创建一个类的实例。你没有提出它。变化:

myERRORS.myERRORS(response)

为:

raise myERRORS.myERRORS(response)