Python 尝试处理IndentationError异常
当我试图处理以下代码中的except部分中的识别错误时Python 尝试处理IndentationError异常,python,python-3.x,exception,Python,Python 3.x,Exception,当我试图处理以下代码中的except部分中的识别错误时 try: def Test(): print("Test Function") except IndentationError: print("Exception raised") 我在输出中遇到以下错误: File "C:/Users/PycharmProjects/py1/Exception.py", line 3 print("Test Function") ^ IndentationErr
try:
def Test():
print("Test Function")
except IndentationError:
print("Exception raised")
我在输出中遇到以下错误:
File "C:/Users/PycharmProjects/py1/Exception.py", line 3
print("Test Function")
^
IndentationError: expected an indented block
Process finished with exit code 1
我接受输出中除部分之外的
我想知道如何处理此类异常。你不能
IndentationError
在“编译”时引发try except
只能处理运行时引发的异常
这有什么意义<代码>缩进错误源于格式错误的代码。这不像你可以在块中重新格式化代码,除了
块,重新编译并重新执行它(理论上,你可以这么做,这非常复杂)。你不能
IndentationError
在“编译”时引发try except
只能处理运行时引发的异常
这有什么意义<代码>缩进错误源于格式错误的代码。这不像你可以在
块中重新格式化代码,除了
块,重新编译并重新执行它(从理论上讲,这非常复杂)。在执行程序之前,编译器会检查你的代码是否有正确的缩进,如果没有,就会引发缩进错误。因此,一般来说,在进入之前,您会得到IndentationError
,除了代码验证阶段的部分,而不是执行部分。
因此,解决这个问题的方法很简单,就是按如下方式进行适当的缩进:
try:
def Test():
print("Test Function") //here's the missing tab, that compiler points to
except IndentationError:
print("Exception raised")
综上所述,IndentationError
的尝试在无用中使用except
构造。在执行程序之前,编译器会检查代码是否有正确的缩进,如果没有,则会引发IndentationError
。因此,一般来说,在进入之前,您会得到IndentationError
,除了代码验证阶段的部分,而不是执行部分。
因此,解决这个问题的方法很简单,就是按如下方式进行适当的缩进:
try:
def Test():
print("Test Function") //here's the missing tab, that compiler points to
except IndentationError:
print("Exception raised")
综上所述,IndentationError
的尝试在无用中进行except
构造。您不能在这种情况下排除缩进错误,因为它是在解析代码时产生的,而不是在运行代码时产生的。一个try..except
块是一个在那个时间点上不存在的运行时构造,所以它还不能做任何事情
如果您只是出于好奇而对捕获该异常感兴趣,那么可以通过编写代码的方式来实现这一点,即当引发代码为:
>>试试:
... 编译(“”“def foo():\n打印('bar')“”、“”、“exec”)
... 除缩进错误外:
... 打印('baz')
...
巴兹
正如DeepSpace已经说过的,排除这样的错误没有什么意义,因为在运行时没有合理的方法来修复这种程序状态 您不能在此过程中排除缩进错误,因为它是在解析代码时引发的,而不是在运行代码时引发的。一个try..except
块是一个在那个时间点上不存在的运行时构造,所以它还不能做任何事情
如果您只是出于好奇而对捕获该异常感兴趣,那么可以通过编写代码的方式来实现这一点,即当引发代码为:
>>试试:
... 编译(“”“def foo():\n打印('bar')“”、“”、“exec”)
... 除缩进错误外:
... 打印('baz')
...
巴兹
正如DeepSpace已经说过的,排除这样的错误没有什么意义,因为在运行时没有合理的方法来修复这种程序状态 每当解析器发现不遵循缩进规则的源代码时,就会发生缩进错误我们可以在导入模块时捕获它。因为模块将在第一次导入时编译。您无法在包含try/except块的同一模块中捕获它,因为如果出现此异常,Python将无法完成模块的编译,并且模块中的任何代码都不会运行
问题在于代码缩进。这将停止python脚本的执行,因为它位于同一模块中
try:
def Test():
print("Test Function")
except IndentationError:
print("Exception raised")
每当解析器发现不遵循缩进规则的源代码时,就会发生缩进错误我们可以在导入模块时捕获它。因为模块将在第一次导入时编译。您无法在包含try/except块的同一模块中捕获它,因为如果出现此异常,Python将无法完成模块的编译,并且模块中的任何代码都不会运行
问题在于代码缩进。这将停止python脚本的执行,因为它位于同一模块中
try:
def Test():
print("Test Function")
except IndentationError:
print("Exception raised")
你不能处理它,你应该修正你的代码格式。。。看你不处理它,你应该修正你的代码格式。。。请参阅“这不是异常,而是错误。”这并不正确,IndentationError
是exception
的子类,在运行时它肯定会被捕获到except块中。他们示例中的问题是他们无法进入运行时。@Arne更新答案。您可以通过“这不是异常,而是一个错误。”这并不正确,IndentationError
是exception
的子类,在运行时它肯定会被捕获到except块中。他们示例中的问题是他们无法进入运行时。@Arne更新答案。你可以通过