c – 抛出或不抛出异常?

我正在和我的一个朋友说话,通过我的新代码,我没有对待例外,只是因为我不知道如何在C中做.他的回答让我感到惊讶:“为什么在地狱里你会想要throw throw?我问他为什么,但他没有一个令人满意的答案,所以我googled它.我发现的第一页之一是一个博客条目,那个发布的人并不完全反对例外,但在回复中开始了一场宗教战争: http://weblogs.asp.net/alex_papadimoulis/archive/2005/03/29/396141.aspx

现在我开始怀疑:抛出异常是不是很糟糕?对于像我这样的学生来说,使用异常作为一般事情来学习编程是错误的吗? (当我抛出异常时,我抓住他们在另一个级别的代码来对待他们,大多数时候).我有一个代码示例,我想知道我该怎么办

int x;
cout << "Type an integer: ";
cin >> x;

在那里输入的不是整数的任何东西都会触发一个异常,对吧?这个例外应该在那里处理.但是当我在程序中其他地方使用的类中有可能的异常时,应该使这个方法抛出一个异常,所以我可以把它当作任何地方来处理它,或者当它有任何问题时,它会返回一个标准值?

例外总是好的,总是坏的,还是在“特殊”情况下使用的东西?为什么?

解决方法

认情况下,C iostreams类不使用异常处理.通常情况下,应该会发生错误的异常,但这种错误是“异常”和“不频繁”(例如磁盘发生故障,网络关闭等).对于您期望的错误条件(例如用户提供无效输入),您应该不应该使用异常处理,除非需要处理这种情况的逻辑远远超出了检测到这种情况的逻辑,其中使用异常的情况是要走的路.使用异常没有什么问题,并且使用例外,他们是值得的绝对是好的…只是避免使用它们,如果…其他工作正常.

至于为什么:

>例外通常提供一种简单,优雅的处理意外错误的方式,但是:>根据编译器和平台的异常传播可能比普通的控制流慢,所以如果你可以在本地处理这种情况,那么这至少会一样快…而且你特别不想放慢速度常见的,预期的情况(如无效输入).也:>异常需要更多的类型信息存在,并且还需要与抛出或捕获异常无关的代码为“异常安全”,这就是为什么某些对象异常.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...