在一个类里,每个方法都要抛出四个相同的异常,嫌老是粘贴复制麻烦,有没有什么办法可以简化下,只抛出一次就可以应用到每个方法中?

解决方案 »

  1.   

    1、改为抛出 RuntimeException 的子类;
    2、四个异常共用一个基类,然后只需要声明抛出该基类。
      

  2.   

    3、将四个四个相同的异常转成一个异常        try{
                ....
            } catch(Exception1 exp) {
                throw new MyException(exp);
            } catch(Exception2 exp) {
                throw new MyException(exp);
            } catch(Exception3 exp) {
                throw new MyException(exp);
            } catch(Exception4 exp) {
                throw new MyException(exp);
            }
      

  3.   

    虽然是一个异常,还是要在每个方法里try{}catch(){},希望不用在每个方法中写一遍~~
      

  4.   

    小弟才疏学浅,希望大神讲明白点,最好给个例子。我需要抛出的四个异常是:AuthenticationException, MalformedURLException, IOException, ServiceException,好像都不是RuntimeException 的子类。
      

  5.   

    偷这个懒?
    直接在最外层throws Exception
      

  6.   

    虽然是一个异常,还是要在每个方法里try{}catch(){},希望不用在每个方法中写一遍~~小弟才疏学浅,希望大神讲明白点,最好给个例子。我需要抛出的四个异常是:AuthenticationException, MalformedURLException, IOException, ServiceException,好像都不是RuntimeException 的子类。悟性也太低了~~ 不想转成Exception 难道不能转成RuntimeException吗~~~~  
      

  7.   

    你是指在类名后面写throws Exception吗?这好像不行吧?
      

  8.   

    虽然是一个异常,还是要在每个方法里try{}catch(){},希望不用在每个方法中写一遍~~小弟才疏学浅,希望大神讲明白点,最好给个例子。我需要抛出的四个异常是:AuthenticationException, MalformedURLException, IOException, ServiceException,好像都不是RuntimeException 的子类。悟性也太低了~~ 不想转成Exception 难道不能转成RuntimeException吗~~~~  
    无奈门外汉,要不你老亲自调教个一年半载~~
      

  9.   


    1、就是:自己在最开始抛出的时候就重新将其封装为 RuntimeException
       public class MyIOException extends RuntimeException ...   catch(IOException ex) {
            throw new MyIOException(ex);
       }2、就是:抛出其公共基类,最流氓就是: throws Exception ;理想的是: throws MyBaseException
    另外,一般来说不要把底层异常毫不封装的往上层狂抛,应该都是要重新包装为 项目自定义异常。
      

  10.   

    楼上出柜了啊
    1、就是:自己在最开始抛出的时候就重新将其封装为 RuntimeException
       public class MyIOException extends RuntimeException ...   catch(IOException ex) {
            throw new MyIOException(ex);
       }2、就是:抛出其公共基类,最流氓就是: throws Exception ;理想的是: throws MyBaseException
    另外,一般来说不要把底层异常毫不封装的往上层狂抛,应该都是要重新包装为 项目自定义异常。
    楼上出柜了啊
      

  11.   


    1、就是:自己在最开始抛出的时候就重新将其封装为 RuntimeException
       public class MyIOException extends RuntimeException ...   catch(IOException ex) {
            throw new MyIOException(ex);
       }2、就是:抛出其公共基类,最流氓就是: throws Exception ;理想的是: throws MyBaseException
    另外,一般来说不要把底层异常毫不封装的往上层狂抛,应该都是要重新包装为 项目自定义异常。
    我明白了,你们是将四个异常合成一个异常再抛出,还是每个方法后都要跟一个throws Exception,不过也是简化了。可能我的意思没表达清楚,我希望就是只写一次throw Exception,每个方法后面不用再跟一个throws Exception。这样可以吗?
      

  12.   


    可以,但未必合适。前面已经说了:
    public class MyIOException extends RuntimeException那么你就不再需要声明 throws MyIOException 这段文字了。
      

  13.   


    1、就是:自己在最开始抛出的时候就重新将其封装为 RuntimeException
       public class MyIOException extends RuntimeException ...   catch(IOException ex) {
            throw new MyIOException(ex);
       }2、就是:抛出其公共基类,最流氓就是: throws Exception ;理想的是: throws MyBaseException
    另外,一般来说不要把底层异常毫不封装的往上层狂抛,应该都是要重新包装为 项目自定义异常。
    楼上出柜了啊
    出轨了?莫非,难道,那么,你是他的.....
      

  14.   


    可以,但未必合适。前面已经说了:
    public class MyIOException extends RuntimeException那么你就不再需要声明 throws MyIOException 这段文字了。
    感觉好像是懂了,还是马上实践吧!多谢大神!