if和try块中的python异常

时间:2015-09-29 13:25:38

标签: python python-2.7 exception

我正在使用请求

将python客户端写入Web服务(REST)

除非用户输入错误的凭据,否则我想提出

我有以下代码块

    try:
        ret=self.req_session.get(URL)
        if (ret.status_code == 401):
            raise Authexecption("Improper credentials")
        else:
            ret.raise_for_status()               
    except Authexecption:
        logging.error("Unable to authenticate. Please check you credentails")
    except requests.exceptions.HTTPError:
        logging.error("Issue with communicating with Web-Services. The HTTP response is " + str(ret.status_code))
    except requests.exceptions.Timeout:
        logging.error("Time out while connecting to the Web-Service..")

这里的想法是,我将为auth问题提出自定义错误消息,并为所有其他问题(5xx,404等等)提供通用错误消息。

当我执行此操作时,我收到以下错误

    except Authexecption:
NameError: global name 'Authexecption' is not defined

我对python很新,并试图学习,我该如何解决这个问题?

- 提前谢谢

2 个答案:

答案 0 :(得分:0)

您需要先定义自定义例外:

class AuthException(Exception):  # Authexecption may be misspelled...
    pass

或许有一个比基本异常Exception更好的继承异常。看看exception hierarchy

答案 1 :(得分:0)

错误说python找不到类Authexception。也就是说,它不存在或者没有导入。

要解决此问题,您需要先创建它:

class AuthException(Exception):
    def __init__(self, message, errors):
        # Call the base class constructor with the parameters it needs
        super(AuthException, self).__init__(message)

然后将其导入到您需要的任何位置。