python中的空错误消息

时间:2013-06-18 20:21:55

标签: python exception

我正在尝试调试错误,当我最初运行它时,我得到一个“无异常提供”,然后放入try / except块以打印出错误。

try:
    #some code
except BaseException, e:
    print str(e)

这会产生一个空白的输出线,任何想法可能是什么?

编辑:抱歉,希望有一个特定的原因,错误消息可能是空白的。没有堆栈跟踪输出,这导致我被迫首先尝试try / except块,我仍在编程这个东西,所以我只是让'编译器'抓住错误。抛出错误的实际代码在Django应用程序中,因此它将具有Django的一些功能。

try:
    if len(request.POST['dateToRun']) <= 0:
        dateToRun = Job.objects.filter(id=jobIDs[i]).values()['whenToRun'].split(' ')[0]
    if len(request.POST['timeToRun']) <= 0:
        timeToRun = Job.objects.filter(id=jobIDs[i]).values()['whenToRun'].split(' ')[1]
except BaseException, e:
    print str(e)

这是视图功能中的代码。 jobIDs是包含值## Selection:##(即17Selection:17)格式的值键对的dict。对不起,我最初忘了发帖。

编辑:repr(e)给了我TypeError(),这比不知道任何东西要好。

4 个答案:

答案 0 :(得分:12)

这意味着该例外没有附加消息。打印例外类型

print repr(e)

您可能还想打印回溯:

import traceback

# ...
except BaseException as e:
    traceback.print_exc()

您希望避免捕获BaseException但是,这并不比一揽子except:语句更好。相反,请抓住更具体的例外。

答案 1 :(得分:6)

以下内容产生一个空行输出:

try:
    raise Exception()
except BaseException, e:
    print str(e)

使用repr(e)查看引发的异常。

答案 2 :(得分:4)

尝试使用:

try:
    #code
except BaseExeption as e:
    print str(e)

这似乎是最容易理解和情感的。

答案 3 :(得分:1)

将try / except块放在较小的代码段周围,直到找到有问题的行。例如,如果您有:

try:
    a = fn(b)
    c = fn(a)
except BaseException, e:
    print str(e)

然后将其更改为:

a = fn(b)
try:
    c = fn(a)
except BaseException, e:
    print str(e)