再次提示对于参数验证使用断言.
对于入力参数应该是全部被考虑到的
(录入错误也应该在逻辑之内,
属于鲁棒性编程方法)
如有不正确那需要防御编程方法
防御编程目的是找出代码出问题的点
而不是业务需要.
在jvm中还有关闭断言的方法.
正式环境下关闭断言.
开发测试下打开断言
PS:如果真的去面试楼上的众人全军覆没
[quote="mercyblitz"][quote="mathfox"][quote="抛出异常的爱"][quote="showr"]一个方法的参数,C里面好像是一堆的if els[color=red]e判断参数是否合法[/color],不合法就返回一个没有实际意义的值
但在java里面有异常机制,当参数不合法的时候,究竟是if else 一样判断后返回一个值
还是直接来个Exception ?
如果是 if else 的话,有什么好处 ?
如果是 exception 的话,又有什么好处 ?
或者是根据不同情况来定 ?
一次面试的题目,至今无解,求真相[/quote]
使用断言.[/quote]
断言,不是也以抛异常做为结束吗?求讲解。[/quote]
断言是错误,不是java.lang.Exception,它是java.lang.AssertionError。
很多框架使用的自定义断言,很少使用JVM断言机制。[/quote]
[quote="heqishan"][quote="抛出异常的爱"]再次提示对于参数验证使用断言.
对于入力参数应该是全部被考虑到的
(录入错误也应该在逻辑之内,
属于鲁棒性编程方法)
如有不正确那需要防御编程方法
防御编程目的是找出代码出问题的点
而不是业务需要.
在jvm中还有关闭断言的方法.
正式环境下关闭断言.
开发测试下打开断言
PS:如果真的去面试楼上的众人全军覆没
[quote="mercyblitz"][quote="mathfox"][quote="抛出异常的爱"][quote="showr"]一个方法的参数,C里面好像是一堆的if els[color=red]e判断参数是否合法[/color],不合法就返回一个没有实际意义的值
但在java里面有异常机制,当参数不合法的时候,究竟是if else 一样判断后返回一个值
还是直接来个Exception ?
如果是 if else 的话,有什么好处 ?
如果是 exception 的话,又有什么好处 ?
或者是根据不同情况来定 ?
一次面试的题目,至今无解,求真相[/quote]
使用断言.[/quote]
断言,不是也以抛异常做为结束吗?求讲解。[/quote]
断言是错误,不是java.lang.Exception,它是java.lang.AssertionError。
很多框架使用的自定义断言,很少使用JVM断言机制。[/quote][/quote]
还是不太明白。。。求详细解答。。。
[/quote]
参数不合法有两种可能
1.设计必须冗余错误参数 ....
2.使用此方法的地方参数录入错误.
对于2.你冗余了那么bug就会被隐藏.
所以不必要的冗余需要去掉.
一个方法只干一件事.
对于发现错误需要定位.
所以需要断言来产生定位信息
在正式环境下启动参数可以选反不使用断言.
(当然你要确定此方法使用的正确性,断言永远不会被运行到.)
对于入力参数应该是全部被考虑到的
(录入错误也应该在逻辑之内,
属于鲁棒性编程方法)
如有不正确那需要防御编程方法
防御编程目的是找出代码出问题的点
而不是业务需要.
在jvm中还有关闭断言的方法.
正式环境下关闭断言.
开发测试下打开断言
PS:如果真的去面试楼上的众人全军覆没
[quote="mercyblitz"][quote="mathfox"][quote="抛出异常的爱"][quote="showr"]一个方法的参数,C里面好像是一堆的if els[color=red]e判断参数是否合法[/color],不合法就返回一个没有实际意义的值
但在java里面有异常机制,当参数不合法的时候,究竟是if else 一样判断后返回一个值
还是直接来个Exception ?
如果是 if else 的话,有什么好处 ?
如果是 exception 的话,又有什么好处 ?
或者是根据不同情况来定 ?
一次面试的题目,至今无解,求真相[/quote]
使用断言.[/quote]
断言,不是也以抛异常做为结束吗?求讲解。[/quote]
断言是错误,不是java.lang.Exception,它是java.lang.AssertionError。
很多框架使用的自定义断言,很少使用JVM断言机制。[/quote]
[quote="heqishan"][quote="抛出异常的爱"]再次提示对于参数验证使用断言.
对于入力参数应该是全部被考虑到的
(录入错误也应该在逻辑之内,
属于鲁棒性编程方法)
如有不正确那需要防御编程方法
防御编程目的是找出代码出问题的点
而不是业务需要.
在jvm中还有关闭断言的方法.
正式环境下关闭断言.
开发测试下打开断言
PS:如果真的去面试楼上的众人全军覆没
[quote="mercyblitz"][quote="mathfox"][quote="抛出异常的爱"][quote="showr"]一个方法的参数,C里面好像是一堆的if els[color=red]e判断参数是否合法[/color],不合法就返回一个没有实际意义的值
但在java里面有异常机制,当参数不合法的时候,究竟是if else 一样判断后返回一个值
还是直接来个Exception ?
如果是 if else 的话,有什么好处 ?
如果是 exception 的话,又有什么好处 ?
或者是根据不同情况来定 ?
一次面试的题目,至今无解,求真相[/quote]
使用断言.[/quote]
断言,不是也以抛异常做为结束吗?求讲解。[/quote]
断言是错误,不是java.lang.Exception,它是java.lang.AssertionError。
很多框架使用的自定义断言,很少使用JVM断言机制。[/quote][/quote]
还是不太明白。。。求详细解答。。。
[/quote]
参数不合法有两种可能
1.设计必须冗余错误参数 ....
2.使用此方法的地方参数录入错误.
对于2.你冗余了那么bug就会被隐藏.
所以不必要的冗余需要去掉.
一个方法只干一件事.
对于发现错误需要定位.
所以需要断言来产生定位信息
在正式环境下启动参数可以选反不使用断言.
(当然你要确定此方法使用的正确性,断言永远不会被运行到.)