C++ 是否在用户(std::exception)异常时使Visual Studio中断?

C++ 是否在用户(std::exception)异常时使Visual Studio中断?,c++,exception-handling,visual-studio-2017,visual-studio-debugging,C++,Exception Handling,Visual Studio 2017,Visual Studio Debugging,我的代码抛出未处理的异常,但VisualStudio中的调试器只会中断系统抛出的异常 例如,下面的getaddrinfo的返回值不是零,应该首先抛出我的异常-事实上,如果我在第171行放置断点,它会被命中-但是调试器只在调用socket时中断 我知道,在Exception Settings中,但这是我正在抛出的std::Exception,并且选中了std::Exception 如何使Visual Studio调试器在出现异常时自动中断? 调试器在抛出时已中断,但您没有显示调用堆栈中实际引发异常

我的代码抛出未处理的异常,但VisualStudio中的调试器只会中断系统抛出的异常

例如,下面的
getaddrinfo
的返回值不是零,应该首先抛出我的异常-事实上,如果我在第171行放置断点,它会被命中-但是调试器只在调用
socket
时中断

我知道,在
Exception Settings
中,但这是我正在抛出的
std::Exception
,并且选中了
std::Exception

如何使Visual Studio调试器在出现异常时自动中断?


调试器在抛出时已中断,但您没有显示调用堆栈中实际引发异常的最顶层函数

您所展示的是堆栈下的一个函数。这表明,当当前调用的函数返回下一行时,要执行的是
socket(…)
行。这就是为什么该行上的图标是绿色的“返回”图标,而不是黄色的“执行当前在此处”图标

右键单击调用堆栈,单击“显示外部代码”,您将看到如下内容:

KernelBase.dll!RaiseException(unsigned long dwExceptionCode, unsigned long dwExceptionFlags, unsigned long nNumberOfArguments, const unsigned long * lpArguments) Line 904  C
vcruntime140d.dll!_CxxThrowException(void * pExceptionObject, const _s__ThrowInfo * pThrowInfo) Line 136    C++
ConsoleApplication5.exe!main() Line 6   C++
ConsoleApplication5.exe!invoke_main() Line 64   C++
请注意,它是
KernelBase.dll!RaiseException
实际从中引发异常的位置

是的,我可以同意这不是非常类似C++,但是抛出异常是一种需要复杂代码的机制,所以它会发生这样的情况。