actboy168 / lua-debug

Lua Debug Adapter for Visual Studio Code
MIT License
435 stars 94 forks source link

捕捉exception error行为跟之前版本不一致 #177

Closed fesily closed 2 years ago

fesily commented 2 years ago
local ok,err = pcall(function()
    local ffi = require "ffff"
 end)

打开所有断点设置. 除了Caught Errors By lua和 Caught Errors By Native. 这个时候行为应该是不捕捉,因为这个是被pcall包裹的错误. 但是会被Native Errors捕捉 getExceptionCaught(errcode) 读取的是lua,errcode是2

   local ffi = require "ffff"

只打开uncaught errors,但是不被捕捉. getExceptionCaught(errcode) 读取的是native,errcode是2

actboy168 commented 2 years ago

不明白你在说什么

fesily commented 2 years ago

比如说我只打开uncaught errors,但是没有选择上面的异常类型,那么任何异常都不会被捕获,如果我选了异常类型,则无论我选没选 uncaught errors都会被捕获到(无论他是不是在pcall/xpcall里面执行),等于说下面的Caught Errors By lua和 Caught Errors By Native. uncaught errors三个选项没有任何用处

actboy168 commented 2 years ago

uncaught errors是指没有被任何错误处理捕获的错误,对于lua而言这种错误的结果是crash。

而你举的例子,用lua.exe测试的结果,错误是被lua.exe的lua_pcall捕获,所以不算是uncaught errors

fesily commented 2 years ago

第一个例子,被捕获的异常的Native errors,不是uncaught errors,问题是我没选Caught Errors By lua和 Caught Errors By Native.不应该是被捕获的异常都不会提示才对.

actboy168 commented 2 years ago

前五个选项是根据错误类型分类,后三个是根据错误被捕获的方式分类,两者不互斥。

fesily commented 2 years ago

准确说问题在于,我只想捕捉一切未在pcall xpcall包裹的异常,目前的配置应该做不到吧,之前的版本是可以的。如果只选uncaught 前五类不选的话目前不会提示异常界面。就如我第二个例子

actboy168 commented 2 years ago

只选uncaught errorscaught errors by native就可以

fesily commented 2 years ago

👌🏻 这个地方有些迷惑性