精华帖 (0) :: 良好帖 (6) :: 新手帖 (13) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2010-08-25
个人感觉,应该throw exception 到一个专门处理异常的类集中处理,ifelse会使程序整体很混乱。
|
|
返回顶楼 | |
发表时间:2010-08-25
最后修改:2010-08-25
再次提示对于参数验证使用断言.
对于入力参数应该是全部被考虑到的 (录入错误也应该在逻辑之内, 属于鲁棒性编程方法) 如有不正确那需要防御编程方法 防御编程目的是找出代码出问题的点 而不是业务需要. 在jvm中还有关闭断言的方法. 正式环境下关闭断言. 开发测试下打开断言 PS:如果真的去面试楼上的众人全军覆没 mercyblitz 写道 mathfox 写道 抛出异常的爱 写道 showr 写道 一个方法的参数,C里面好像是一堆的if else判断参数是否合法,不合法就返回一个没有实际意义的值
但在java里面有异常机制,当参数不合法的时候,究竟是if else 一样判断后返回一个值 还是直接来个Exception ? 如果是 if else 的话,有什么好处 ? 如果是 exception 的话,又有什么好处 ? 或者是根据不同情况来定 ? 一次面试的题目,至今无解,求真相 使用断言. 断言,不是也以抛异常做为结束吗?求讲解。 断言是错误,不是java.lang.Exception,它是java.lang.AssertionError。 很多框架使用的自定义断言,很少使用JVM断言机制。 |
|
返回顶楼 | |
发表时间:2010-08-25
sam_chi 写道 看情况吧,如果能在方法里面处理不影响方法功能的话使用if else处理,如果参数错误导致方法不能正常工作,那么就得抛异常了,Java提供了java.lang.IllegalArgumentException,可以直接new一个抛出去,这是一个RuntimeException,不需要try..catch
我比较认同这种,当然不同程序员的喜好不同吧。即使是异常也可以统一给出异常显示界面。 |
|
返回顶楼 | |
发表时间:2010-08-25
qq123zhz 写道 个人感觉,应该throw exception 到一个专门处理异常的类集中处理,ifelse会使程序整体很混乱。
支持!! 封装自己的异常体系.将底层代码中出现的程序、参数异常或者业务逻辑错误向上层抛出.在最外层统一拦截处理,该机日志记日志,改给用户提示给用户提示. |
|
返回顶楼 | |
发表时间:2010-08-25
何时需要使用断言
1.可以在预计正常情况下程序不会到达的地方放置断言 2.断言可以用于检查传递给私有方法的参数。(对于公有方法,因为是提供给外部的接口,所以必须在方法中有相应的参数检验才能保证代码的健壮性) 3.使用断言测试方法执行的前置条件和后置条件 4.使用断言检查类的不变状态,确保任何情况下,某个变量的状态必须满足。(如age属性应大于0小于某个合适值) 什么地方不要使用断言 断言语句不是永远会执行,可以屏蔽也可以启用 因此: 1.不要使用断言作为公共方法的参数检查,公共方法的参数永远都要执行 2.断言语句不可以有任何边界效应,不要使用断言语句去修改变量和改变方法的返回值 |
|
返回顶楼 | |
发表时间:2010-08-25
抛出异常的爱 写道 再次提示对于参数验证使用断言.
对于入力参数应该是全部被考虑到的 (录入错误也应该在逻辑之内, 属于鲁棒性编程方法) 如有不正确那需要防御编程方法 防御编程目的是找出代码出问题的点 而不是业务需要. 在jvm中还有关闭断言的方法. 正式环境下关闭断言. 开发测试下打开断言 PS:如果真的去面试楼上的众人全军覆没 mercyblitz 写道 mathfox 写道 抛出异常的爱 写道 showr 写道 一个方法的参数,C里面好像是一堆的if else判断参数是否合法,不合法就返回一个没有实际意义的值
但在java里面有异常机制,当参数不合法的时候,究竟是if else 一样判断后返回一个值 还是直接来个Exception ? 如果是 if else 的话,有什么好处 ? 如果是 exception 的话,又有什么好处 ? 或者是根据不同情况来定 ? 一次面试的题目,至今无解,求真相 使用断言. 断言,不是也以抛异常做为结束吗?求讲解。 断言是错误,不是java.lang.Exception,它是java.lang.AssertionError。 很多框架使用的自定义断言,很少使用JVM断言机制。 还是不太明白。。。求详细解答。。。 |
|
返回顶楼 | |
发表时间:2010-08-25
最后修改:2010-08-25
heqishan 写道 抛出异常的爱 写道 再次提示对于参数验证使用断言.
对于入力参数应该是全部被考虑到的 (录入错误也应该在逻辑之内, 属于鲁棒性编程方法) 如有不正确那需要防御编程方法 防御编程目的是找出代码出问题的点 而不是业务需要. 在jvm中还有关闭断言的方法. 正式环境下关闭断言. 开发测试下打开断言 PS:如果真的去面试楼上的众人全军覆没 mercyblitz 写道 mathfox 写道 抛出异常的爱 写道 showr 写道 一个方法的参数,C里面好像是一堆的if else判断参数是否合法,不合法就返回一个没有实际意义的值
但在java里面有异常机制,当参数不合法的时候,究竟是if else 一样判断后返回一个值 还是直接来个Exception ? 如果是 if else 的话,有什么好处 ? 如果是 exception 的话,又有什么好处 ? 或者是根据不同情况来定 ? 一次面试的题目,至今无解,求真相 使用断言. 断言,不是也以抛异常做为结束吗?求讲解。 断言是错误,不是java.lang.Exception,它是java.lang.AssertionError。 很多框架使用的自定义断言,很少使用JVM断言机制。 还是不太明白。。。求详细解答。。。 参数不合法有两种可能 1.设计必须冗余错误参数 .... 2.使用此方法的地方参数录入错误. 对于2.你冗余了那么bug就会被隐藏. 所以不必要的冗余需要去掉. 一个方法只干一件事. 对于发现错误需要定位. 所以需要断言来产生定位信息 在正式环境下启动参数可以选反不使用断言. (当然你要确定此方法使用的正确性,断言永远不会被运行到.) |
|
返回顶楼 | |
发表时间:2010-08-25
楼主 抽时间去看看Effect Java 有一章节讲了异常~
|
|
返回顶楼 | |
发表时间:2010-08-25
我觉得还是exception一下,毕竟是java推荐的
|
|
返回顶楼 | |
发表时间:2010-08-25
异常是给所不能预料到的错误而准备的解决方案,不是用来取代正常的判断的。
|
|
返回顶楼 | |