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

正如您在代码中看到的那样,我有一个需要元组 (*args) 的函数,现在我正在处理有关它的错误。它的使命现在不是必需的,但我有语法错误的问题。当我在括号中写1a6时,我期待自定义的错误消息。当我运行它时,通常我会看到一条错误消息,但它不是我的。


def member_finder_outer(*args):

 return args


try:

   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)

但它仍然会写出自己的错误消息。


慕哥6287543
浏览 155回答 2
2回答

慕雪6442864

不幸的是,大多数SyntaxErrors 是在解析文件ref时抛出的。所以它在 try 和 except 被注册之前被抛出。如果thoughSyntaxError被扔进去eval(),那么你可以抓住它def member_finder_outer(*args): return argstry:   eval("print(member_finder_outer(1, 12, 13, 14, 15, 1a6, 17, 18, 19, 20, 21)")except:   print("I want here.")免责声明:eval是一个非常危险的工具,因此请谨慎使用。

慕少森

1a6 是无效项目。它必须是一个数字,可能是 16,或者可能是一个字符串“1a6”。您甚至在程序执行之前就收到了错误。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python