锁定老帖子 主题:有关异常使用的一点疑惑
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-04-11
因为你的总的思路还是利用异常来传递信息和控制流程,因此在这样的情况下,除了rethrow时,增加额外的信息,看来没有更好的办法。
但是考虑设计一个或多个容纳编译结果的类如何?用它们在调用和被调用之间传递信息,函数的返回值也可以同时利用(例如表明编译成功还是失败)。这样做也许更加规范化,结构化。也许它是一种值得考虑的、避免了如上方式使用exception的思路。 |
|
返回顶楼 | |
发表时间:2005-04-12
Code Compile(Func f[,CompileResult result]) {
try { CompileParameter(Func f); } cathc (CompileParameterException e) { // 可以转译抛出异常,这是可以不要参数result // 还可以result.setResult(e); } } |
|
返回顶楼 | |
发表时间:2005-04-12
ajoo 写道 是啊。我同意你对耦合的·看法。看来,重复的rethrow是唯一办法了。
如果你觉得throw exception是不好的,我觉得也许还有其他一个方法哦。 学习log4j的功能,它可以记录执行路径的。 这里可能有两个方法: 1、直接使用log4j,帮你跟踪执行的过程 2、研究log4j的代码,然后加入到你的代码中 嘴上说说 莫怪莫怪~~ |
|
返回顶楼 | |
发表时间:2005-04-13
这种情况我们也是用的rethrow,好像没什么好办法。
PS:发现ajoo的一个特点,就是无数人看不明白他的意思。 |
|
返回顶楼 | |
发表时间:2005-04-13
引用 我现在也逐渐倾向使用runtime exception.主要是考虑到不要给架构带来影响,不强迫引入太多exception wrapping.
这其实就是假定了Checked Exception 是失败的。在我看来runtime exception 就像在面向过程语言(如C)中的if (error) exit(errorCode);一样,将错误仍给容器(如操作系统,应用服务器等)处理。 |
|
返回顶楼 | |
发表时间:2005-05-10
编译的错误对于编译器来说并非异常,而是正常。
|
|
返回顶楼 | |
发表时间:2005-05-11
捉到异常要做两件事情:
1)记录信息: 这个可以解决你说的“不知道异常信息”的问题 2)处理或者rethrow,如果不处理,当然要rethrow啦, 这个可以解决你说的“异常的层次的问题) 其实用RuntimeException就可以解决所有问题,其实,我们不可能在程序中对异常采取什么”补充操作“而让我们的系统正确的运行,感觉CheckException都有点”人工资能“了! |
|
返回顶楼 | |