我正在尝试调试错误,当我最初运行它时,我得到一个“无异常提供”,然后放入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(),这比不知道任何东西要好。
答案 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)