求大神给个简化“异常抛出”的办法?

失忆的鱼 2013-08-23 03:22:06
在一个类里,每个方法都要抛出四个相同的异常,嫌老是粘贴复制麻烦,有没有什么办法可以简化下,只抛出一次就可以应用到每个方法中?
...全文
213 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
失忆的鱼 2013-08-23
  • 打赏
  • 举报
回复
引用 16 楼 fudongrifdr 的回复:
这么懒
这是在夸我吗
失忆的鱼 2013-08-23
  • 打赏
  • 举报
回复
引用 14 楼 ldh911 的回复:
[quote=引用 13 楼 qq525003138 的回复:] 我希望就是只写一次throw Exception,每个方法后面不用再跟一个throws Exception。这样可以吗?
可以,但未必合适。 前面已经说了: public class MyIOException extends RuntimeException 那么你就不再需要声明 throws MyIOException 这段文字了。[/quote] 感觉好像是懂了,还是马上实践吧!多谢大神!
末日哥 2013-08-23
  • 打赏
  • 举报
回复
这么懒
失忆的鱼 2013-08-23
  • 打赏
  • 举报
回复
引用 12 楼 kemucc 的回复:
楼上出柜了啊 [quote=引用 11 楼 ldh911 的回复:] [quote=引用 6 楼 qq525003138 的回复:] 小弟才疏学浅,希望大神讲明白点,最好给个例子。我需要抛出的四个异常是:AuthenticationException, MalformedURLException, IOException, ServiceException,好像都不是RuntimeException 的子类。
1、就是:自己在最开始抛出的时候就重新将其封装为 RuntimeException public class MyIOException extends RuntimeException ... catch(IOException ex) { throw new MyIOException(ex); } 2、就是:抛出其公共基类,最流氓就是: throws Exception ;理想的是: throws MyBaseException 另外,一般来说不要把底层异常毫不封装的往上层狂抛,应该都是要重新包装为 项目自定义异常。[/quote] 楼上出柜了啊[/quote] 出轨了?莫非,难道,那么,你是他的.....
MiceRice 2013-08-23
  • 打赏
  • 举报
回复
引用 13 楼 qq525003138 的回复:
我希望就是只写一次throw Exception,每个方法后面不用再跟一个throws Exception。这样可以吗?
可以,但未必合适。 前面已经说了: public class MyIOException extends RuntimeException 那么你就不再需要声明 throws MyIOException 这段文字了。
失忆的鱼 2013-08-23
  • 打赏
  • 举报
回复
引用 11 楼 ldh911 的回复:
[quote=引用 6 楼 qq525003138 的回复:] 小弟才疏学浅,希望大神讲明白点,最好给个例子。我需要抛出的四个异常是:AuthenticationException, MalformedURLException, IOException, ServiceException,好像都不是RuntimeException 的子类。
1、就是:自己在最开始抛出的时候就重新将其封装为 RuntimeException public class MyIOException extends RuntimeException ... catch(IOException ex) { throw new MyIOException(ex); } 2、就是:抛出其公共基类,最流氓就是: throws Exception ;理想的是: throws MyBaseException 另外,一般来说不要把底层异常毫不封装的往上层狂抛,应该都是要重新包装为 项目自定义异常。[/quote] 我明白了,你们是将四个异常合成一个异常再抛出,还是每个方法后都要跟一个throws Exception,不过也是简化了。可能我的意思没表达清楚,我希望就是只写一次throw Exception,每个方法后面不用再跟一个throws Exception。这样可以吗?
kemucc 2013-08-23
  • 打赏
  • 举报
回复
楼上出柜了啊
引用 11 楼 ldh911 的回复:
[quote=引用 6 楼 qq525003138 的回复:] 小弟才疏学浅,希望大神讲明白点,最好给个例子。我需要抛出的四个异常是:AuthenticationException, MalformedURLException, IOException, ServiceException,好像都不是RuntimeException 的子类。
1、就是:自己在最开始抛出的时候就重新将其封装为 RuntimeException public class MyIOException extends RuntimeException ... catch(IOException ex) { throw new MyIOException(ex); } 2、就是:抛出其公共基类,最流氓就是: throws Exception ;理想的是: throws MyBaseException 另外,一般来说不要把底层异常毫不封装的往上层狂抛,应该都是要重新包装为 项目自定义异常。[/quote] 楼上出柜了啊
MiceRice 2013-08-23
  • 打赏
  • 举报
回复
引用 6 楼 qq525003138 的回复:
小弟才疏学浅,希望大神讲明白点,最好给个例子。我需要抛出的四个异常是:AuthenticationException, MalformedURLException, IOException, ServiceException,好像都不是RuntimeException 的子类。
1、就是:自己在最开始抛出的时候就重新将其封装为 RuntimeException public class MyIOException extends RuntimeException ... catch(IOException ex) { throw new MyIOException(ex); } 2、就是:抛出其公共基类,最流氓就是: throws Exception ;理想的是: throws MyBaseException 另外,一般来说不要把底层异常毫不封装的往上层狂抛,应该都是要重新包装为 项目自定义异常。
失忆的鱼 2013-08-23
  • 打赏
  • 举报
回复
引用 8 楼 rainbowsix 的回复:
[quote=引用 5 楼 qq525003138 的回复:] [quote=引用 3 楼 rainbowsix 的回复:] 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);
        }
虽然是一个异常,还是要在每个方法里try{}catch(){},希望不用在每个方法中写一遍~~[/quote]
引用 6 楼 qq525003138 的回复:
[quote=引用 1 楼 ldh911 的回复:] 1、改为抛出 RuntimeException 的子类; 2、四个异常共用一个基类,然后只需要声明抛出该基类。
小弟才疏学浅,希望大神讲明白点,最好给个例子。我需要抛出的四个异常是:AuthenticationException, MalformedURLException, IOException, ServiceException,好像都不是RuntimeException 的子类。[/quote] 悟性也太低了~~ 不想转成Exception 难道不能转成RuntimeException吗~~~~ [/quote] 无奈门外汉,要不你老亲自调教个一年半载~~
失忆的鱼 2013-08-23
  • 打赏
  • 举报
回复
引用 7 楼 cbxjj 的回复:
偷这个懒? 直接在最外层throws Exception
你是指在类名后面写throws Exception吗?这好像不行吧?
无聊找乐 2013-08-23
  • 打赏
  • 举报
回复
引用 5 楼 qq525003138 的回复:
[quote=引用 3 楼 rainbowsix 的回复:] 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);
        }
虽然是一个异常,还是要在每个方法里try{}catch(){},希望不用在每个方法中写一遍~~[/quote]
引用 6 楼 qq525003138 的回复:
[quote=引用 1 楼 ldh911 的回复:] 1、改为抛出 RuntimeException 的子类; 2、四个异常共用一个基类,然后只需要声明抛出该基类。
小弟才疏学浅,希望大神讲明白点,最好给个例子。我需要抛出的四个异常是:AuthenticationException, MalformedURLException, IOException, ServiceException,好像都不是RuntimeException 的子类。[/quote] 悟性也太低了~~ 不想转成Exception 难道不能转成RuntimeException吗~~~~
剑神一笑 2013-08-23
  • 打赏
  • 举报
回复
偷这个懒? 直接在最外层throws Exception
失忆的鱼 2013-08-23
  • 打赏
  • 举报
回复
引用 1 楼 ldh911 的回复:
1、改为抛出 RuntimeException 的子类; 2、四个异常共用一个基类,然后只需要声明抛出该基类。
小弟才疏学浅,希望大神讲明白点,最好给个例子。我需要抛出的四个异常是:AuthenticationException, MalformedURLException, IOException, ServiceException,好像都不是RuntimeException 的子类。
失忆的鱼 2013-08-23
  • 打赏
  • 举报
回复
引用 3 楼 rainbowsix 的回复:
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);
        }
虽然是一个异常,还是要在每个方法里try{}catch(){},希望不用在每个方法中写一遍~~
fedori 2013-08-23
  • 打赏
  • 举报
回复
引用 1 楼 ldh911 的回复:
1、改为抛出 RuntimeException 的子类; 2、四个异常共用一个基类,然后只需要声明抛出该基类。
写个例子撒
无聊找乐 2013-08-23
  • 打赏
  • 举报
回复
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);
        }
huntor 2013-08-23
  • 打赏
  • 举报
回复
改成抛一个自定义的异常。
MiceRice 2013-08-23
  • 打赏
  • 举报
回复
1、改为抛出 RuntimeException 的子类; 2、四个异常共用一个基类,然后只需要声明抛出该基类。

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧