错误的处理常用来检查有害的输入数据,断言用来检查代码的的bug,Qt中提供了两个断言的宏Q_ASSERT()和Q_ASSERT_X().下面简单讲述下两个宏的使用:
1. Q_ASSERT(bool)
例如:
// File: div.cpp
#include <QtGlobal>
int divide(int a, int b)
{
Q_ASSERT(b != 0);
return a / b;
}
Q_ASSERT宏判断bool值 为假的时候通过 qFatal() 函数输出错误信息
ASSERT: "b == 0" in file div.cpp, line 7
2. Q_ASSERT(bool, device, log)
例如:
// File: div.cpp
#include <QtGlobal>
int divide(int a, int b)
{
Q_ASSERT_X(b != 0, "divide", "division by zero");
return a / b;
}
Q_ASSERT_X宏判断bool值为假时,通过 qFatal() 函数输出错误信息
ASSERT failure in divide: "division by zero", file div.cpp, line 7
可以看出这两个宏中一个是自定义log信息和设备信息 而一个则默认Qt自带的log信息
这两个宏生效的前提是没有定义 QT_NO_DEBUG
注意:如果变量参数来自于系统内部,则可使用断言
如果来源于外部,则应该使用错误代码来检查和处理非法的数据