- 主题:异常这玩意儿当初是哪个脑残发明出来的?
c/c++,从来不会自动释放动态使用的内存,对吧
如果某个调用层次上有动态的对象,那么就得在这里捕获处理,小心地释放内存,然后再次抛出
【 在 ylh1969 的大作中提到: 】
: 说得好,但是有一个不解。
: 如果异常跳出了好几层函数,中间层new出的对象,是否都能析构呢?
: 如果都自动析构,如果抛的信息含有这些内容呢?
--
FROM 223.101.206.*
cpu就这么设计的
【 在 speedboy2998 的大作中提到: 】
:
: 污染性太强了。。。
: 老老实实地判断返回值不好好的吗?
:
#发自zSMTH@ELS-AN00
--
FROM 223.64.32.*
可以把所有堆内存的释放都放在析构函数里
【 在 e729 的大作中提到: 】
: c/c++,从来不会自动释放动态使用的内存,对吧
: 如果某个调用层次上有动态的对象,那么就得在这里捕获处理,小心地释放内存,然后再次抛出
:
: ...................
--
FROM 123.119.25.*
异常的问题是 c++ 没有强制标注一个函数是不是抛出异常; 虽然有 no exception 或者 throw 标注, 但一般也没人在意, 一个不标注的函数签名并不表明它一定抛出异常.
这样中间层就很难受; 内存还好说, 智能指针用上就行了
但, 比如中间层是一个无限循环, 本来就不打算退出, 结果一不小心调用或间接调用了一个可能会抛出异常的函数, 这就很坑了.
除了不管它抛不抛异常都当要抛处理外, 就没有别的办法
--
修改:zylthinking2 FROM 220.181.41.*
FROM 220.181.41.*
异常确实不算好用,人力有时而穷,在规定时间内设计一套完美适配应用的异常体系是不现实的
Rust的error propagation还不错,C++也在考虑借鉴,但真正引入标准估计还得好多年
--
FROM 114.251.196.*
最近发现一个objective-c写的macos产品频出内存泄露,这个语言一是有点老,二是释放内存也得很小心不能忘
--
FROM 114.241.228.*
我用c,然后用long jump,“重载”了内存和文件的操作,感觉可以把 判断返回值这种做法就去掉了。
【 在 speedboy2998 的大作中提到: 】
: 污染性太强了。。。
: 老老实实地判断返回值不好好的吗?
--
FROM 122.193.118.*
已经引入标准了,std::expected。但标准库api没有都搞两套。
【 在 hadoop 的大作中提到: 】
: 异常确实不算好用,人力有时而穷,在规定时间内设计一套完美适配应用的异常体系是不现实的
: Rust的error propagation还不错,C++也在考虑借鉴,但真正引入标准估计还得好多年
: --
: ...................
--
FROM 114.246.239.*
为了解决太多人不看返回值的问题吧。。。
【 在 speedboy2998 的大作中提到: 】
: 污染性太强了。。。
: 老老实实地判断返回值不好好的吗?
--
FROM 124.126.2.*
这方法比较麻烦。而且,同样存在中间层内存泄露问题。
估计try catch 就是用的longjmp。
【 在 il15 的大作中提到: 】
: 我用c,然后用long jump,“重载”了内存和文件的操作,感觉可以把 判断返回值这种做法就去掉了。
:
--
FROM 221.218.60.*