例外和错误在C++编程中有严格区分,不可以混用。
其表现形式如下:
错误,一定是以错误代码的方式返回。
int Fucn(int Parm)
{
int nErrorCode = 0;
if (...)
{
nErrorCode = -1;
}
else if (...)
{
nErrorCode = -2;
}
else
{
nErrorCode = -3;
}
return nErrorCode;
}
例外,按照既定的功能类抛出。
void Fucn(int Parm)
{
if (...)
{
...;
}
else if (...)
{
...;
}
else
{
throw new exception();
}
}
可能有人会问,可不可以把错误码通过例外抛出?这个是最让人困惑的地方,答案是不可以。这个当然不是因为C++语法的原因。
要弄明白这个问题,先思考为什么要存在错误和例外两种表达方式?
1.编译期和运行期的区别
如果一个问题在程序的编译期可以确定,则必须以error的方式定义。如果无法在编译期确定,在运行期才可能出现的程序错误,这个就叫“例外”,必须以exception定义。
2.开发者和使用者的区别
错误的信息是给开发人员使用的,开发人员根据错误码决定下一步的处理流程。例外则相反,其信息是展示给软件的使用者看的,两者不能混淆。
总之一句话,开发期可以确定异常叫错误,不能确定的异常叫例外,例外信息要展示给使用者。