加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 抛出或不抛出异常?

发布时间:2020-12-16 03:01:01 所属栏目:百科 来源:网络整理
导读:我正在和我的一个朋友说话,通过我的新代码,我没有对待例外,只是因为我不知道如何在C中做.他的回答让我感到惊讶:“为什么在地狱里你会想要throw throw?我问他为什么,但他没有一个令人满意的答案,所以我googled它.我发现的第一页之一是一个博客条目,那个发布
我正在和我的一个朋友说话,通过我的新代码,我没有对待例外,只是因为我不知道如何在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类不使用异常处理.通常情况下,应该会发生错误的异常,但这种错误是“异常”和“不频繁”(例如磁盘发生故障,网络关闭等).对于您期望的错误条件(例如用户提供无效输入),您应该不应该使用异常处理,除非需要处理这种情况的逻辑远远超出了检测到这种情况的逻辑,其中使用异常的情况是要走的路.使用异常没有什么问题,并且使用例外,他们是值得的绝对是好的…只是避免使用它们,如果…其他工作正常.

至于为什么:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读