请教编程问题 try catch and assert

karen99 2020-10-14 05:20:03

写程序时有时候偷懒,特别是在算法还没确认算法是否能工作,特别不喜欢花时间在编程标准上,总想先等确认算法能工作,再让代码标准化。相信这肯定是个坏习惯,应该慢慢改正。今天果真就被程序员同事抱怨了,最糟糕的是他说得我不太明白。具体情况是在我代码try之后的括号内的某段代码导致程序crash.我们的程序员给我如下反馈,说他从来不会用空的catch blocks,而且他会用assert 在调试时立刻看到什么东西,请看下面原文回复。我知道用try catch,也知道assert ,但是没明白他想让我做什么,感觉这是一个特别简单的问题,不好意思直接问他,先来请教下大家,先谢谢大家
try
{

//one line here caused crash

}
catch(...){}

我们程序员回复如下

There is a coding mantra that says do not use empty catch blocks – I almost always put in an assert if nothing else so you see them immediately when debugging!
...全文
216 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
karen99 2020-10-20
  • 打赏
  • 举报
回复
非常感谢大家的回复我再学习学习,有问题再来请教
qybao 2020-10-15
  • 打赏
  • 举报
回复
字面翻译过来的意思
There is a coding mantra that says do not use empty catch blocks –
编程里有句行话,不要使用空的catch代码块
I almost always put in an assert if nothing else so you see them immediately when debugging!
我几乎总是放个assert语句如果没有别的处理的话,这样在debug的时候你能很快地看到这些信息

所以,不一定是说是在catch里放个assert(false),可以根据情况assert(关键的变量)

SleekStone 2020-10-15
  • 打赏
  • 举报
回复
3楼说的对。assert是debug模式下生效的,其实就是给程序员自查代码,方便调试用的。
lin5161678 2020-10-15
  • 打赏
  • 举报
回复
引用 2 楼 karen99的回复:
非常感谢你的回复 所以我们程序员是建议我如果不知catch什么东西话,永远这么做 try { } catch(...) { assert(false); } 可是我在程序里试了一下,故意产生一个exception,有这个assert(false);和没有assert(false);没有差别呀,麻烦告诉一下为什么,谢谢
断言要在debug模式才会生效
karen99 2020-10-14
  • 打赏
  • 举报
回复
非常感谢你的回复 所以我们程序员是建议我如果不知catch什么东西话,永远这么做 try { } catch(...) { assert(false); } 可是我在程序里试了一下,故意产生一个exception,有这个assert(false);和没有assert(false);没有差别呀,麻烦告诉一下为什么,谢谢
SleekStone 2020-10-14
  • 打赏
  • 举报
回复
在catch里面什么都不做的话相当于忽略异常呗,其导致的影响视代码逻辑而定,有时候可能没有任何影响,有时候可能是个灾难,所以当你决定catch里面什么都不做的时候,一定要确保你的try里就算有异常了,你的程序还能以用户可以接受的方式跑。我想你说的“他从来不会用空的catch blocks,而且他会用assert 在调试时立刻看到什么东西”的意思应该是在catch(...){assert(false);}的意思吧,因为catch里面什么都不用做的话说明就算是try里发生异常了,系统还是能够正常跑的,而且程序员认为正常逻辑情况下try里不会发生异常,所以在此catch里面加assert方便调试,毕竟调试阶段什么都可能发生的。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧