python 异常处理不带 except 为什么会报错?

题目:字符出现的最后一个位置,下面代码需要输出:cbda
这个题目我的疑问是:remove不存在的元素自然是会报错,用上try和finally,还是报错,带上except就不会报错,try和finally不能这样用吗?

x = "abcbda"
a = list(x)[1:]
print(a)
y = list(x)[0:1]
print(y)
for b in a[:]:
    print(b)
    try:
        y.remove(b)
    #except就不会报错, Exception:
    #    print()
    finally:
        y.append(b)

print(y)
阅读 1.3k
2 个回答

如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。

finally:是无论是否发生异常都会执行。

可以这样用,你的错不是语法错,是运行时错。

你确实抛出了一个 exception 没有处理,当然会报错。finally 并不处理错误,也不会忽略错误。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题