关于java的异常处理,有一些疑惑,请知道的人不吝赐教,十分感谢。
(1)一个函数throws的异常,如果我自己没有写catch语句,那么异常发生时,异常是怎么被处理的?例如下面代码中,我的函数抛出了异常,但我在其它地方调用该函数时,根本没有再显式抛出,并用catch处理它。
public int update(String type, String...params) throws SQLException{
        return executeUpdate(sql);
}
(2)我自定义了一个异常后,可能在很多地方它都会被抛出,这样我就需要在每个它可能被抛出的地方catch并用同样的方法处理它,代码冗余很大,我能不能只抛出,然后在某个地方集中处理这些异常呢?例如,我在许多页面都会检查用户是否在线(只是举个例子,或者这种情况不适合用异常处理),如果不在线,则将其引导到登录界面。那么,我在每个页面都要redirect,能不能检查到不在线时,只抛出一个异常,然后集中在一个类似ActionHandler里处理呢?java 异常处理

解决方案 »

  1.   

    spring的AOP日志异常处理机制,可以很方便的
      

  2.   

    在调用的入口里catch就可以了吧
    程序总是有个入口方法的,
    好比加j2se里的main
    struts中action里的execute方法。
      

  3.   

    1.如果throw了没有catch,那么会出现的问题是你的程序在运行时会报错,同时会停止运行,影响到其他地方
    2.如果要统一的去处理,那么Spring有一个AOP功能,你可以去拦截一下
      

  4.   

    spring没用过…我会去查查的。但是我的问题非spring不能解决吗?我主要是想知道java本身在处理异常时候的原理。
      

  5.   

    pring的AOP日志异常处理机制,在里面你可以对应的Exception做对应处理
      

  6.   

    我不是说不知道在哪儿catch,我是想换个地方catch。并且我在写jsp网页的时候,不用main函数的。我的问题是想集中处理。
    比如说在write.jsp页面里,我会先检查用户是否已登录,如果没有登录(假设我把这种情况当作异常处理),那么我抛出异常。这时候当然可以在执行检查的语句之后catch这个异常了,然后在这个catch语句块里,我可以将用户重定位到欢迎页面。
    但是在另外一个例如delete.jsp页面里,我又要检查用户是否已经登录,如果没登录,我要进行同样的操作。另外可能还会有很多异常,我要一个一个catch并处理。比较麻烦。如果能够只在这里用throws抛出异常,然后在另一个地方例如一个类ExceptionListener里(主动)自动捕获这些异常,并根据异常种类分类处理就好了,不知道能不能实现。
      

  7.   


    java的RuntimeException应该很熟悉吧?是不用显式catch的。我想要的大概就是这种效果,在一个地方抛出异常,然后用类似ExceptionListener的东西(主动)自动捕获并处理这些异常。
      

  8.   

    Spring  AOP中不是有一种就是异常拦截么。