我最近开始从 C# 背景开始学习 C++。我的问题是处理异常的方式。
如果我有一个nullptr
地方,导致从一个禁止的位置读取,那么我会在 VS 中得到一个漂亮的调用堆栈,如下所示:
但是,如果我抛出我自己的异常,或者断言失败,那么我就不会得到任何关于出了什么问题的线索。VS 只是显示一个错误窗口:
答:这对我来说有点不舒服,因为在 C# 中我会在这两种情况下获得堆栈跟踪。有没有办法打印堆栈跟踪?或者有没有VS的插件来实现这个功能?
B:为什么 AccessViolationException 与我们自己抛出的异常不同?为什么我们没有断言失败的堆栈跟踪?
C:创建我自己的断言函数会有多糟糕,当断言失败时会导致 AccessViolationException?
EDIT1:是的,我应该更仔细地阅读该消息框,而不是立即单击中止。我的错。