diff --git "a/54.\346\267\261\345\272\246\350\247\243\345\257\206\350\231\232\346\213\237\346\234\272\347\232\204\346\211\247\350\241\214\347\216\257\345\242\203\357\274\232\346\240\210\345\270\247\345\257\271\350\261\241.html" "b/54.\346\267\261\345\272\246\350\247\243\345\257\206\350\231\232\346\213\237\346\234\272\347\232\204\346\211\247\350\241\214\347\216\257\345\242\203\357\274\232\346\240\210\345\270\247\345\257\271\350\261\241.html" index 63de68a..88fde82 100644 --- "a/54.\346\267\261\345\272\246\350\247\243\345\257\206\350\231\232\346\213\237\346\234\272\347\232\204\346\211\247\350\241\214\347\216\257\345\242\203\357\274\232\346\240\210\345\270\247\345\257\271\350\261\241.html" +++ "b/54.\346\267\261\345\272\246\350\247\243\345\257\206\350\231\232\346\213\237\346\234\272\347\232\204\346\211\247\350\241\214\347\216\257\345\242\203\357\274\232\346\240\210\345\270\247\345\257\271\350\261\241.html" @@ -387,25 +387,12 @@

我们是在第 4 行获取的栈帧,所以打印结果是 4。

int f_iblock

-

用于跟踪 try / except / finally 代码块的层级深度,它记录了当前栈帧中活跃的 try 语句块的数量,每进入一个新的 try 语句块时加 1,离开 try 语句块时减 1。

-
try:           # f_iblock = 1
-    try:       # f_iblock = 2
-        pass
-    except:
-        pass   
-except:        # f_iblock = 1
-    pass
-finally:       # f_iblock = 0
-    pass
-
-

f_iblock 对于虚拟机的异常捕获来说非常重要,可以在异常处理时确定当前代码在哪个 try 语句块内,帮助确定应该执行哪个 except 或 finally 子句,保证异常处理和清理代码能按正确的嵌套顺序执行。

+

用于跟踪 try / except / finally 代码块的层级深度。具体等介绍异常捕获的时候再说,总之 f_iblock 对于虚拟机的异常捕获来说非常重要,可以在异常处理时确定当前代码在哪个 try 语句块内,帮助确定应该执行哪个 except 或 finally 子句,保证异常处理和清理代码能按正确的嵌套顺序执行。

char f_executing

当前栈帧是否仍在执行。

PyTryBlock f_blockstack[CO_MAXBLOCKS]

一个栈,用于追踪代码块,比如代码块的进入和退出,以及管理代码块的上下文信息。那么都支持哪些代码块呢?