"project2.exe has stopped working."
是一个模糊的错误,但肯定会在运行时发生。这对您或您的程序的用户没有帮助,因此您需要实现更好的错误处理。
使用向量时,运行时错误通常来自错误的分配(std::bad_alloc
异常)和访问向量中不存在的元素(std::out_of_range
异常)。捕获这些异常以防止您的程序崩溃、内存泄漏和显示"project2.exe has stopped working."
错误消息。
您可以通过在 main 函数中放置一个 try-catch 块来捕获程序中的所有异常:
int main(int argc, char *argv[])
{
try
{
// put all your code here
Heap<int> events;
}
catch (const std::exception& x)
{
// all std exceptions are caught here
std::cerr << x.what() << '\n';
}
}
如果您的代码包含vector[subscript]
,则不会引发std::out_of_range
异常。如果您不需要对性能至关重要,请将其替换vector.at(subscript)
为抛出异常。
请记住,错误处理不会解决问题,但可以为您提供关键提示,从而导致解决方案。此外,您应该考虑使用调试器。他们会告诉你哪一行代码导致程序停止工作。