`
抛出异常的爱
  • 浏览: 628674 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

答复: 面试题:用Exception异常还是if判断

阅读更多
再次提示对于参数验证使用断言.
对于入力参数应该是全部被考虑到的
(录入错误也应该在逻辑之内,
属于鲁棒性编程方法)

如有不正确那需要防御编程方法
防御编程目的是找出代码出问题的点
而不是业务需要.

在jvm中还有关闭断言的方法.
正式环境下关闭断言.
开发测试下打开断言

PS:如果真的去面试楼上的众人全军覆没
mercyblitz 写道
mathfox 写道
抛出异常的爱 写道
showr 写道
一个方法的参数,C里面好像是一堆的if else判断参数是否合法,不合法就返回一个没有实际意义的值

但在java里面有异常机制,当参数不合法的时候,究竟是if else 一样判断后返回一个值

还是直接来个Exception ?

如果是 if else 的话,有什么好处 ?

如果是 exception 的话,又有什么好处 ?

或者是根据不同情况来定 ?

一次面试的题目,至今无解,求真相

使用断言.

断言,不是也以抛异常做为结束吗?求讲解。



断言是错误,不是java.lang.Exception,它是java.lang.AssertionError。

很多框架使用的自定义断言,很少使用JVM断言机制。



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就会被隐藏.
所以不必要的冗余需要去掉.
一个方法只干一件事.
对于发现错误需要定位.
所以需要断言来产生定位信息
在正式环境下启动参数可以选反不使用断言.
(当然你要确定此方法使用的正确性,断言永远不会被运行到.)
分享到:
评论
4 楼 抛出异常的爱 2010-08-25  
polaris1119 写道
抛出异常的爱 写道
polaris1119 写道
LZ,你开始说:“再次提示对于参数验证使用断言. ”,而“在jvm中还有关闭断言的方法.
正式环境下关闭断言.
开发测试下打开断言 ”

这不是有点矛盾吗?
正式环境中就不需要参数验证了吗?谢谢

不需要.
因为断言会把服务给停了....


也许你没太明白我的意思。

面试题是:用Exception异常还是if判断参数是否合法。既然是判断参数是否合法,那么不管是在测试还是在正式环境下,该参数都有可能是不合法的,那么就都应该进行合法性判断。而你说的,在正式环境下断言关闭了,那岂不是起不到合法性判断的作用了?请指教。


可能输入错误
与代码bug不一样
可能发生的问题需要用if else来处理.
(当然如果本函数体内不能处理的需要exception)
代码bug产生的入力参数不正确.
则用断言来定位
3 楼 polaris1119 2010-08-25  
抛出异常的爱 写道
polaris1119 写道
LZ,你开始说:“再次提示对于参数验证使用断言. ”,而“在jvm中还有关闭断言的方法.
正式环境下关闭断言.
开发测试下打开断言 ”

这不是有点矛盾吗?
正式环境中就不需要参数验证了吗?谢谢

不需要.
因为断言会把服务给停了....


也许你没太明白我的意思。

面试题是:用Exception异常还是if判断参数是否合法。既然是判断参数是否合法,那么不管是在测试还是在正式环境下,该参数都有可能是不合法的,那么就都应该进行合法性判断。而你说的,在正式环境下断言关闭了,那岂不是起不到合法性判断的作用了?请指教。
2 楼 抛出异常的爱 2010-08-25  
polaris1119 写道
LZ,你开始说:“再次提示对于参数验证使用断言. ”,而“在jvm中还有关闭断言的方法.
正式环境下关闭断言.
开发测试下打开断言 ”

这不是有点矛盾吗?
正式环境中就不需要参数验证了吗?谢谢

不需要.
因为断言会把服务给停了....
1 楼 polaris1119 2010-08-25  
LZ,你开始说:“再次提示对于参数验证使用断言. ”,而“在jvm中还有关闭断言的方法.
正式环境下关闭断言.
开发测试下打开断言 ”

这不是有点矛盾吗?
正式环境中就不需要参数验证了吗?谢谢

相关推荐

    前端面试题:前端框架面试题大全

    前端面试题:前端框架面试题大全; 前端面试题:前端框架面试题大全; 前端面试题:前端框架面试题大全; 前端面试题:前端框架面试题大全; 前端面试题:前端框架面试题大全; 前端面试题:前端框架面试题大全; ...

    Java 最常见 200+ 面试题全解析:面试必备208题

    Java作为一门广泛使用的编程语言,其面试题涵盖了众多的知识领域,包括基础语法、面向对象、集合框架、多线程、网络编程、IO流、异常处理、JVM内存模型、设计模式、数据库操作、Spring框架等。以下是对这些知识点的...

    iOS开发试题大全之二:面试题400条

    题型包含:判断题、单选题,多选题和面试题。这套资料共分为"语法","常识","界面","iOS","操作","数据结构","多线程","网络","多媒体","安全"十个篇章。 大家可以利用这些试题加强iOS开发的理论知识,当然对面试也是...

    10万字总结java面试题和答案(八股文之一)Java面试题指南

    Java异常面试题 Java中的IO与NIO面试题 Java反射面试题 Java序列化面试题 Java注解面试题 多线程&并发面试题 JVM面试题 Mysql面试题 Redis面试题 Memcached面试题 MongoDB面试题 Spring面试题 Spring Boot面试题 ...

    Java 最常见 200+ 面试题全解析:面试必备

    Java作为一门广泛使用的编程语言,其面试题涵盖了基础语法、面向对象、集合框架、多线程、网络编程、异常处理、JVM、设计模式、数据库交互、Spring框架等多个方面。以下是对这些知识点的详细解析: 1. **Java基础**...

    牛客大数据面试题集锦+答案,共523道,46W+字。大厂必备

    大数据面试题V3.0完成了。共523道题,679页,46w+字,来源于牛客870+篇面经。 主要分为以下几部分: Hadoop面试题:100道 Zookeeper面试题:21道 Hive面试题:47道 Flume面试题:11道 Kafka面试题:59到 HBase面试题...

    Java 最常见 200+ 面试题全解析:面试必备.pdf

    Java面试题全解析涉及的知识点非常广泛,覆盖了Java编程的多个重要模块和主题。在详细介绍前,我们首先要明白JDK和JRE的区别。JDK即Java Development Kit,是开发Java程序的环境,包含了编译器(javac)和运行环境...

    大学班委选举经典面试题.pdf

    在大学班委选举的经典面试题中,涉及到的多个知识点涵盖了领导力、团队协作、问题解决、自我认知、沟通技巧和责任担当等多个方面。以下是这些面试题所体现的关键知识点的详细说明: 1. **时间管理与优先级设定**:...

    .NET面试题(精华版)

    注意,只有题目没有回答:部分题目如下: 面试题1 介绍ASP.NET ...面试题10 什么是.NET中的私有程序集 私有程序集就是不同项目中生成的程序集,仅供本项目使用,或者可以经过配置被某一个其它项目的程序集引用。

    Java:面试题大全带答案

    面试题大全带答案这个资源无疑为准备Java面试的开发者提供了宝贵的参考资料。以下将详细解析标题、描述中涉及的一些关键知识点,并深入探讨其背后的原理和技术。 1. **Java基础**: - **变量与数据类型**:Java...

    面试小抄面试题 面试题sss

    * 根据面试类型:可以将面试小抄面试题分为技术面试题、行为面试题、智慧面试题等。 * 根据面试难度:可以将面试小抄面试题分为简单、中等、困难三类。 * 根据面试领域:可以将面试小抄面试题分为IT面试题、金融面试...

    2024年tensorflow面试题必问.zip

    适用人群:本面试题适用于所有想要参加技术面试的求职者,无论你是刚毕业的大学生还是有一定工作经验的开发者,都可以通过这些面试题来提升自己的面试能力。 使用场景及目标:本面试题可以在求职者准备技术面试的...

    2023java八股文高频面试题

    这份资源是一份2023年Java面试题集,适用于准备Java开发岗位面试的人员。本资源收集了大量的Java面试题,旨在帮助读者熟悉Java编程语言以及相关的编程技术和知识点,从而在面试中更好地展现自己的能力和潜力。本资源...

    Java面试题、Java基础面试题、Java异常面试题,Java面试宝典

    - **异常分类**:Java中的异常分为检查异常(Checked Exception)和运行时异常(Unchecked Exception)。 - **异常的抛出与捕获**:理解try-catch-finally语句块,知道如何使用throw关键字抛出异常。 - **自定义...

    Java异常面试题(2020最新版).pdf

    也就是说,当程序中可能出现这类异常时,倘若既"没有通过throws声明抛出它",也"没有用try-catch语句捕获它",还是会编译通过。 编译时异常:Checked Exception,需要在编译时检查的异常。Java编译器会检查它,并...

    java面试题(100道)

    Java作为一门广泛使用的编程语言,其面试题涵盖了众多的知识领域,包括基础语法、面向对象、集合框架、多线程、异常处理、IO流、网络编程、设计模式、JVM内存模型以及框架应用等。以下是对这100道Java面试题可能涉及...

    2024年java面试题-java异常方面的面试题

    ### 2024年Java面试题:Java异常方面的面试题 #### 核心知识点解析 **一、Java异常架构** 1. **`Throwable`**: - `Throwable`是Java语言中所有错误与异常的超类。 - `Throwable`有两个主要子类:`Error`和`...

    2017java面试题

    2. **异常处理**:理解如何使用try-catch-finally块来捕获和处理异常,以及了解不同类型的异常,如运行时异常和检查性异常。 3. **集合框架**:面试中常见的主题包括List、Set、Map接口及其实现,如ArrayList、...

    172份,7701页互联网大厂面试题.pdf

    172份,7701页互联网大厂面试题 172份,7701页互联网大厂面试题 172份,7701页互联网大厂面试题

    程序员C/C++面试题汇总(Intel英特尔面试题.微软亚洲技术中心的面试题,Cisco思科面试题,华为C/C++笔试题,慧通面试题)

    6. **异常处理**:了解如何使用try-catch块进行异常处理,理解不同类型的异常以及何时抛出异常。 7. **内联函数与函数重载**:内联函数用于优化代码,函数重载则允许同一函数名对应不同的参数列表,理解这两者的...

Global site tag (gtag.js) - Google Analytics