为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我不能像我排除的那样显示错误消息?

为什么我不能像我排除的那样显示错误消息?

慕哥6287543 2023-05-23 10:14:27
正如您在代码中看到的那样,我有一个需要元组 (*args) 的函数,现在我正在处理有关它的错误。它的使命现在不是必需的,但我有语法错误的问题。当我在括号中写1a6时,我期待自定义的错误消息。当我运行它时,通常我会看到一条错误消息,但它不是我的。def member_finder_outer(*args): return argstry:   print(member_finder_outer(1, 12, 13, 14, 15, 1a6, 17, 18, 19, 20, 21)) except:   print("I want here.")File "d:/Burak/Yazılım/Python/Dersler/17-/Binary Search/binary_search.py", line 55   print(member_finder_outer(1, 12, 13, 14, 15, 1a6, 17, 18, 19, 20, 21)                                                 ^SyntaxError: invalid syntax我试过这些:except SyntaxError:    print("I want here.")except Exception:    print("I want here.")except SyntaxError as e:    print("I want here.",e)但它仍然会写出自己的错误消息。
查看完整描述

2 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

不幸的是,大多数SyntaxErrors 是在解析文件ref时抛出的。所以它在 try 和 except 被注册之前被抛出。如果thoughSyntaxError被扔进去eval(),那么你可以抓住它

def member_finder_outer(*args):

 return args


try:

   eval("print(member_finder_outer(1, 12, 13, 14, 15, 1a6, 17, 18, 19, 20, 21)")

except:

   print("I want here.")

免责声明eval是一个非常危险的工具,因此请谨慎使用。


查看完整回答
反对 回复 2023-05-23
?
慕少森

TA贡献2019条经验 获得超9个赞

1a6 是无效项目。它必须是一个数字,可能是 16,或者可能是一个字符串“1a6”。您甚至在程序执行之前就收到了错误。



查看完整回答
反对 回复 2023-05-23
  • 2 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信