美文网首页IT修真院_JAVA
对SERVICE返回的结果是否要判空,为什么?是否要打日志,应该

对SERVICE返回的结果是否要判空,为什么?是否要打日志,应该

作者: ba1d04276512 | 来源:发表于2017-11-10 21:45 被阅读123次

    大家好,我是IT修真院上海分院第3期学员,一枚正直善良的java程序员,今天给大家分享一下,修真院java任务中的一个知识点:对SERVICE返回的结果是否要判空,为什么?是否要打日志,应该打什么样的日志,为什么?。

    大多数人可能都写过返回null值的方法,对于返回null值也没了解的过于深入.大多数人可能也因为偷懒或觉得麻烦而不去打日志,也可能没有切身地体会过日志的好处,也可能不知道如何去优雅地打日志.Today,让我为你一一分享

    什么是null?

    表示这个指针并不指向任何的对象.这样的指针称之为Null指针.简单来说就是未被初始化 在c语言中如果定义了一个指针变量设置为null就表明没有该变量没有指向任何内存单元的地址

    null应用在哪些地方?

    在c语言中,将指针设置为null来表明空指针,或释放指针变量指向的内存后将指针变量设置为null,防止成为野指针.在Java中将变量设置为null时有利于gc更早发现回收,能够减少程序占用内存的情况

    可以编写返回null值的方法吗,为什么?

    返回null是没问题的,不过在编程中返回null是一个非常不好的习惯.首先如果A方法调用B方法,B方法返回一个null值 假设A方法没有进行检查直接传递给了调用它的C方法,C方法也没有检查直接装进model里返回给视图层了,视图层从model中 拿数据也没检查直接就调用属性造成该视图创建失败.

    从以上我们可以看到一个方法返回一个null值,使用该null值的地方必须先进行检查.但是人无法保证时刻都做到正常检查后再使用 ,如果某个重要的地方因为没有检查就使用,这就可能造成一些负面影响.如果超级大会上演示时,你的jsp视图没有检查使用而controller却返回的是一个null,那么你的这个页面就挂掉了.可能在一些小场合无足轻重,但类似apple全球发布会就不一样了.

    用什么替代null?

    首先让我们回答大多数人用null来代表什么?就我自己之前写过的方法来说,之所以返回null是因为不能返回给调用方期待的信息时. 我想大多数人也可能如此,也可能是简单想表示空.

    知道了多数人用null表示什么,那么就能否有其他方式替代而消除null带来的负面影响呢?

    1.使用Java8中的optional类

    optional是Java8中新加入的特性,主要是为了解决NullException问题.上面说过绝大多人 使用null仅仅是为了表示空,而Java8的optional能够更好的表示这个概念还能避免NullException

    因本人还未学习java8,故不演示,请自行查阅相关文档.

    2.使用抛出异常替代返回null值

    如果当前方法会出现没有数据可返回的情况时可抛出检查型异常(自定义),让调用方必须捕获该异常 调用方捕获到该异常就会知道没有值可以返回.可以自行做出相应的动作.

    如何自定义异常

    为什么需要使用自定义异常,第一jdk提供的异常不利于表示业务情况,因此需要自定义异常. 自定义异常主要继承jdk的三大异常即可,runtimeException(非检查型异常), Exception(检查型异常),Error(非检查型系统异常). 在实际中的自定义异常中一般普遍使用的是继承Exception(检查型异常). RuntimeException因为是非检查型异常,表明可以捕捉处理也可以不处理,因此很少使用. 而Error表明系统级别错误,一般即使捕获也无法处理.

    异常 异常

    如何使用异常?

    使用异常

    为什么要打日志?如何优雅地打日志?

    打的优雅得当的日志是当应用出现问题时能够快速定位问题的绝佳途径,而糟糕笨拙的日志不仅仅让代码看起来非常糟糕还无法定位问题.

    aop日志 aop日志 aop日志

    日志除了方法执行前打印入参,出现异常后打印异常信息,和方法结束后打印出参.还必须在一些重要的逻辑判断打出逻辑判断结果.

                                                PPT


    腾讯视频

    今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

    技能树.IT修真院“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

    这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~我的邀请码:16318412,或者你可以直接点击此链接:http://www.jnshu.com/login/1/16318412

    相关文章

      网友评论

        本文标题:对SERVICE返回的结果是否要判空,为什么?是否要打日志,应该

        本文链接:https://www.haomeiwen.com/subject/kuqimxtx.html