论坛首页 Java企业应用论坛

一个疯狂的乱用异常的想法

浏览 17116 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (8)
作者 正文
   发表时间:2011-12-01  
首先我们知道,一个方法的返回值只能是某一种类型

但是一个方法却可以抛出任意多种的异常

由此我联想到,这不就等于一个方法的返回值可以是任意多种类型?

不知道基于这点,能不能搞出什么疯狂的用法
   发表时间:2011-12-01   最后修改:2011-12-03
想“返回”不同类型值,没问题啊,传个object类型的list进去(ref/out),传出来之后按规则转成想要的类型,想要同时得到几个不同类型的“返回值”都可以实现
0 请登录后投票
   发表时间:2011-12-01  
楼上的正确呀,楼主是不是想太远了,快回来吧。
0 请登录后投票
   发表时间:2011-12-01  
1.虽然抛出的异常让当前程序终止,并出栈,但是调用出并不会把他作为返回值入栈
2.返回任意类型在面向对象中不就是Object
0 请登录后投票
   发表时间:2011-12-01  
3.异常本身也是一种对象,也是特定类型,有这继承的层次结构,你怎么返回任意多种类型
0 请登录后投票
   发表时间:2011-12-01  
2楼同学思想很对。

方法是可以抛出不同类型异常。
异常是类对象。你自己写也是类对象。
定义为返回一个 Object类型,你也可以返回任意对象。

返回Map, List,更可以随意了。Map,List它们也是类和对象。

关键还是这个问题: 为什么要设计这样一个方法?合理么。
0 请登录后投票
   发表时间:2011-12-01  
返回Object不就可以了吗???
0 请登录后投票
   发表时间:2011-12-01  
楼主是不是蓝翔出来的
0 请登录后投票
   发表时间:2011-12-01   最后修改:2011-12-01
gtssgtss 写道
首先我们知道,一个方法的返回值只能是某一种类型

但是一个方法却可以抛出任意多种的异常

由此我联想到,这不就等于一个方法的返回值可以是任意多种类型?

不知道基于这点,能不能搞出什么疯狂的用法


用户登陆的标准作法boolean isok =  usersvc.login(username,password);

用户被锁定状态,是一种对应的异常返回的。
这样设计可以使此接口无缝扩展多种不能登陆的条件。

2006年robbin有过是否需要用异常来控制流程相关贴子有此类的很多讨论

PS:函数指针这东西好用,用好人不多。
所以我建议尽量不要使用这种方式设计架构
作作hack手段还可以容忍,
读懂意大利面条似的跳转路径不是人类的能力范围。


foohsinglong 写道
返回Object不就可以了吗???

华为有一个项目所有的svc函数都返回同一个object 这个object是所有Entity的父类,
这里保留了一个异常信息,一个异常代码。
0 请登录后投票
   发表时间:2011-12-01  
用异常?
用反射吧……更灵活

反正都是个慢
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics