相关疑难解决方法(0)

python:我怎么知道发生了什么类型的异常?

我有一个主程序调用的函数:

try:
    someFunction()
except:
    print "exception happened!"
Run Code Online (Sandbox Code Playgroud)

但是在函数执行过程中它会引发异常,因此会跳转到该except部分.

我怎样才能确切地看到发生了什么someFunction()导致异常发生?

python exception

200
推荐指数
7
解决办法
16万
查看次数

带有错误代码和错误消息的自定义Python异常

class AppError(Exception):
    pass

class MissingInputError(AppError):
    pass

class ValidationError(AppError):
    pass
Run Code Online (Sandbox Code Playgroud)

...

def validate(self):
    """ Validate Input and save it """

    params = self.__params

    if 'key' in params:
        self.__validateKey(escape(params['key'][0]))
    else:
        raise MissingInputError

    if 'svc' in params:
        self.__validateService(escape(params['svc'][0]))
    else:
        raise MissingInputError

    if 'dt' in params:
        self.__validateDate(escape(params['dt'][0]))
    else:
        raise MissingInputError


def __validateMulti(self, m):
    """ Validate Multiple Days Request"""

    if m not in Input.__validDays:
        raise ValidationError

    self.__dCast = int(m)
Run Code Online (Sandbox Code Playgroud)

validate()和__validateMulti()是验证和存储传递的输入参数的类的方法.从代码中可以看出,当一些输入参数丢失或某些验证失败时,我会引发一些自定义异常.

我想定义一些特定于我的应用程序的自定义错误代码和错误消息,比如

错误1100:"找不到关键参数.请验证您的输入."

错误1101:"找不到日期参数.请验证您的输入"

...

错误2100:"多天参数无效.接受的值为2,5和7."

并向用户报告.

  1. 如何在自定义例外中定义这些错误代码和错误消息?
  2. 如何以我知道要显示的错误代码/消息的方式引发/捕获异常?

(PS:这是Python 2.4.3).


巴斯蒂安伦纳德提到这个SO评论,你并不需要总是定义一个新的 …

python error-handling custom-exceptions

38
推荐指数
2
解决办法
6万
查看次数