Python 为什么我不能显示错误消息,我例外?

Python 为什么我不能显示错误消息,我例外?,python,error-handling,Python,Error Handling,正如您在代码中所看到的,我有一个需要元组(*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)) e

正如您在代码中所看到的,我有一个需要元组(*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)

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

不幸的是,在解析文件时,大多数语法错误都会被抛出。所以它是在注册try和except之前抛出的。如果
SyntaxError
被抛出到
eval()中,那么您可以捕获它

def成员查找器外部(*args):
返回参数
尝试:
评估(“打印(成员查找器外部(1、12、13、14、15、1a6、17、18、19、20、21)”)
除:
打印(“我想在这里。”)

免责声明
eval
是一个非常危险的工具,请务必小心使用。

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

由于语法错误,代码没有达到实际运行的程度
try
except
处理运行时错误,而不是解析错误。将
1a6
更改为
16
,并在该行中添加缺少的结束符。一旦消除语法错误,您的
try
将捕获任何出现的运行时错误。啊,抱歉,本能地修复了此问题。我已将答案编辑为includee缺少的参数。您正朝着错误的方向移动。OP绝对不应该为此使用
eval
,尽管它可能允许在运行时捕获语法错误(但没有人希望这样做).Yep,绝对不应该在任何实际应用中使用它。我假设OP只是在探索
SyntaxError
s是如何工作的,并给出了一个假设的答案。这是可能的。我认为OP要了解的最有帮助的事情是语法错误和运行时错误之间的区别,而不是将所有错误转化为运行时错误。Agreed,在原始答案中添加了免责声明。是的,当然,我知道。这是无效的,但我正在尝试错误的方法。