在此问题听起来非常愚蠢之前,让我解释一下。我使用了很多C#,Java和C ++。我注意到的主要问题是错误处理,特别是在第三方库中。在C#和Java中,处理错误的一般方法是通过异常,而不是传统的C处理错误,即int。
这是我在C#/ Java中常见的内容:
try
{
ExternalLibraryInit();
}
catch (ExternalLibraryException ex)
{
//error
}
这是我在C ++中常见的东西:
if (ExternalLibraryInit()) //Generally returns an int, which no error is 0 and a error is
//anything else
{
//error
}
为什么人们倾向于在C ++中加入异常?我不明白为什么不使用它们,这不就是它们的用途吗?
答案 0 :(得分:8)
您显示的示例(条件if )不符合有效情况例外。
例外用于处理异常情况。在您的情况下,该函数仅返回一个值,两个结果都是 预期 ,没有任何例外。该函数可能是C( C没有抛出任何的例外)api你没有的源代码。如果在这种情况下,你根本无法摆脱条件。检查后如何处理错误/异常完全取决于您。很可能会抛出一个异常并将其传播到层次结构上,但这是在你按照它要求处理的方式处理api之后。
至于为什么人们不使用例外,可能有很多原因(或神话),我想到的三个最常见的原因是:
答案 1 :(得分:4)
我是一名C ++程序员,我几乎从不使用异常,因为这种非本地控制流程使我更难以推断出我的程序在做什么。我非常擅长推理我所看到的控制流构造,并且在推理控制流构造时非常糟糕,我没有看到。其他人则有不同的感受并做出相应的计划。