关于“异常”的异常困惑

学了一段时间的java,对异常还是一头雾水。throw一个异常会怎么样呢?除了让程序无灾难性的结束,好象并没有起到什么作用啊.在catch里是怎么样做处理的呢,难道就是简单的抛出异常,或打印异常信息,这样就够了吗???如果调用printStackTrace算不上已经处理好了异常,那你们又是怎么处理异常的呢,我怎么感觉很多情况下打印异常信息几乎成了处理异常的代名词?另外,在一个方成员函数中throws 异常的时候,这些异常是在什么时候执行呢(如果真的发生了异常的话);例如:
public aMethod() throws CommonException
{
try{
……
}
catch (MyException e){
e.printStackTrace();
}
}
在这里如果发生了一个不属于MyException范围但是属于CommonException范围的异常,那么是不是就会抛出CommonException呢?还有一个问题就是什么样的成员函数需要在后面throws可能出现的
异常,什么样的成员函数不需要呢?(难道能保证一个函数不发生异常吗?)

如果不catch异常,你可能无法定位在哪个方法出错。养成catch编程可以减少调试时间。

对于异常有几种类型,其中一种是你业务异常,不属于语言致命异常,这样你专门做一个异常对象,可以将其和其他异常区分开来捕捉,然后做不同的处理。

首先,感谢banq大哥,能够不厌其烦的解答我的问题,真的让我很感动!看了你的帖子后,我怎么还是觉得好象它在调试阶段的确很重要,但是调试结束了呢?好象并没有多大作用。

所谓的对异常的处理,我并没有见到对异常做过什么复杂的处理的,感觉做了处理和没做处理关系并不是很大,它并没有解决什么实质性的问题,感觉。
--天生愚钝,还望海涵。

异常捕捉是很重要的,因为有些东西,比方说事务回滚,就需要有catch机制来实现

恩,这的确是一方面,有更多的作用吗?

如果你主动捕获异常,那么程序继续进行,如果没有捕获,那么程序将异常结束

可以下载《Practical Java》的第3章看看

http://jjhou.csdn.net/practical-java-gb-chap1-3.pdf

个人觉得这本书讲exception的部分还比较实用。

谢谢你,Stephen!
刚下下来,正在看ing……
看完在感想,呵呵。