Python 尝试处理IndentationError异常

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

当我试图处理以下代码中的except部分中的识别错误时

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更新答案。你可以通过