作者Killercat (杀人猫™)
站内Programming
标题Re: [问题] C++ try-catch语法
时间Tue Sep 25 07:56:05 2007
※ 引述《meltice (三亿两千万大散户)》之铭言:
: 我始终不懂try catch怎麽用
: 例如到底该catch什麽东西
: catch(...)虽然可以catch到全部但是却不知道是catch到什麽东东
: catch到的pointer到底要不要在delete或Release
: 前一阵子使用try catch(...)
: 搞了半天不知道程式错在哪里
: 因为function也是别人写的我没有source code
: 最後找到因为别人的function里面call CopyMemory
: 然後他没有去处里CopyMemory也会产生的exception
: 结果让我catch到
: 然後换我不知道到底是错在哪里
: 反正try catch就是一整个很乱七八糟的东西
: 会让自己让别人都乱七八糟的东西
: 还是用if else最清楚明白一目了然
以C++的概念来讲的话, 继承标准exception来作修改, 会是一个比较好的方法
而不是自创一堆exception丢来丢去
参考一下#include <exception>的写法
http://www.cplusplus.com/doc/tutorial/exceptions.html
这里有些范例码 以及教你怎麽继承std理面的exception
还有个资本额两亿上下的大公司写出来的code原始码连char*都throw出来
看了一整个昏倒/faint
这种属於debug层面的东西并不是只有coder自己写的爽写的好就好
要考虑後面接手的人debug的难度
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.132.211.69
1F:推 ephesians:丢一个字串出来,很怪吗? 61.231.66.196 09/25 12:31
2F:推 xcycl:很怪, 因为没办法标准例外接住来看 ... 220.134.69.245 09/25 14:35
3F:推 ephesians:可是上次我写过一个练习,接到了这例外 61.231.66.196 09/25 19:11
4F:推 UNARYvvv:其实 m 大原本提到那个 CopyMemory 写入140.115.222.102 09/25 23:22
5F:→ UNARYvvv:错误的 exception 跟 C++ exception是不140.115.222.102 09/25 23:23
6F:→ UNARYvvv:一样的东西140.115.222.102 09/25 23:23
7F:→ UNARYvvv:对了关於丢出字串140.115.222.102 09/25 23:24
8F:→ UNARYvvv:单纯想用 catch (const char *e)140.115.222.102 09/25 23:24
9F:→ UNARYvvv:接住一个提示错误的讯息的需求应该够用吧140.115.222.102 09/25 23:24
10F:→ UNARYvvv:(并非否定 std::exception 相关的好处)140.115.222.102 09/25 23:31
11F:推 Killercat:的确throw char*是很简便的写法 220.132.211.69 09/26 06:28
12F:→ Killercat:不过在大多数商用软体理面debug需求不会 220.132.211.69 09/26 06:28
13F:→ Killercat:那麽简单, 而且大多数设计共识都是拿 220.132.211.69 09/26 06:29
14F:→ Killercat:std::exception来parse, 尽量不要把教科 220.132.211.69 09/26 06:29
15F:→ Killercat:书跟实作混为一谈比较好 220.132.211.69 09/26 06:30
16F:→ Killercat:然後例外当然不会接不到, 这一定的 220.132.211.69 09/26 06:30
17F:推 xcycl:我是指不能用 std::exception 接到 = = 220.134.69.245 09/26 10:52
18F:→ xcycl:例如光用 char* 作 traceback 很麻烦的 ... 220.134.69.245 09/26 10:53
19F:推 Killercat:aye, 这点我也是我想说的 意见相同 XD 125.233.129.77 09/26 13:32
20F:→ Killercat:因为我们catch都马抓std::exception =w= 125.233.129.77 09/26 13:32