在Visual Studio(MSVC)中,有一个选项可以完全禁用输出窗口(Tools->Options->Debugging->Output Window->General Output Settings->Exception Messages=Off
)中的异常消息。有没有一种方法(可能使用#pragma
?)可以仅针对特定代码段禁用此类输出?
使用案例:std::stoi()
对不能转换为数字的非数字输入抛出异常。然后应用程序代码会正确捕获并处理此异常。由于此异常在正常程序运行期间发生多次,并且我已经捕获并处理了此异常,因此我不希望有关此异常的消息因特定代码行而引起,从而污染调试器输出窗口,我发现调试输出很有用,但是一旦我正确处理了一个特定的异常,我不希望它在调试器输出窗口中保持混乱。
基本上,我想有以下几点:
...
//I want exception messages from here
...
try
{
//I don't want exception messages from here because:
//a) I have a ton of expected bad inputs during normal program run and
//b) I have handled these exceptions
#pragma some_magic_pragma_here_to_disable_exception_messages
auto result = std::stoi(str,pos,base);
#pragma some_magic_pragma_here_to_reenable_exception_messages
}
catch (std::invalid_argument &)
{
//Do something here
}
catch (std::out_of_range &)
{
//Do something here
}
catch (...)
{
//Do something here
}
...
//I want exception messages from here again
...
字符串
我看了看list of MSVC pragmas,但找不到任何与我所需要的远程相似的东西。
1条答案
按热度按时间vqlkdk9b1#
是否有一种方法(可能使用#pragma?)仅对特定代码段禁用此类输出?
**答案是否定的。**VS并没有设计这样的东西。
你提到的技术是另一回事,预处理器指令是对预处理器的指令,预处理器是编译器的一部分,在编译之前处理你的代码。它们用于包含文件,定义宏,有条件地编译代码,以及执行其他编译时操作。
你可以看看这个:
Preprocessor
你分享的链接实际上是在这个概念下。
调试器是一种在运行时发现和修复错误的工具。2它独立于预处理器和编译器运行。
它仅限于通过用户界面改变调试器行为的某些设置,调试器的行为不受预处理器指令的控制。