我有一个错误raise eb : list index out of range
。
我不明白为什么当我在其他try - catch
加注时
我正在try - catch
中进行try - catch
,并且都会引发错误。
以下是我的代码,错误行位于raise eb
:
try:
print("debut edit")
print(p)
modif_box = get_modif_box_profile(p)
post_box = get_Post_Box(p)
print("modi_box")
print(modif_box)
print("mbu id")
print(modif_box.id)
diff = {}
posts = {}
new_post = []
diff["posts"] = posts
posts["modified_post"] = new_post
for post in modif_box.edit_post_user.all():
# print(post.id_mod)
try:
messagenew = post_box.post.all().filter(id=post.id_mod)[0]
# print(post_new)
print("posts")
print(post)
# todo a factoriser
if messagenew.id > int(last_id) and messagenew.sender.id != p.id:
name = get_name_contact(p, messagenew)
return_post = {}
return_post["uid"] = messagenew.sender.id
return_post["pid"] = messagenew.id
return_post["author"] = name
return_post["title"] = messagenew.title
return_post["date"] = unix_time_millis(messagenew.date)
return_post["smile"] = count_smile(messagenew)
return_post["comment"] = count_comment(messagenew)
return_post["data"] = messagenew.data
return_post["type"] = messagenew.type_post.type_name
new_post.append(return_post)
else:
print("depop edit")
modif_box.edit_post_user.remove(post)
modif_box.save()
except Exception as eb:
PrintException()
# raise eb (if i decomment here i have an error in my program)
print(diff)
return diff
except Exception as e:
PrintException()
raise e
问候并感谢
答案 0 :(得分:2)
如果您在那里评论raise
声明,则表示您没有出现错误并不代表 。它只是意味着你 处理 Exception
- 在你的情况下来自我可以告诉IndexError
- 通过捕捉它except Exception
然后调用PrintException()
。
当你raise
例外时,你实际做的是:
raise语句允许程序员强制发生指定的异常。
因此,通过取消评论,您允许IndexError
名为eb
的{{1}}在内部try-except
块中捕获后重新显示,并被外部{{1}抓住你再次重新提起它的子句。
通常,您不希望以这种通用方式捕获异常,因为它可能会隐藏您想要了解的程序的某些不可预测的行为。
通过简单地指定它们(在您的情况下为表单的except子句)来限制您在except子句中捕获的异常:
try - except
可能就足够了。