检查参数的有效性

2018-10-31  本文已影响0人  造一个大大的轮子

前段时间,负责帮忙测试了一些接口。于是乎用postman测试,但是测试过程中出现了错误,返回的结果只是显示500状态码和服务异常,再没有了其他的提示了,检查良久,原来是自己调用方法时传参失败了.其实在工作中很多时候都会遇到这样的问题,多希望调用别人的接口,如果失败了,返回的错误信息能够简明扼要,能够快速的定位错误所在。
对于编程老手来说,实现一个方法的第一步需要做的就是做方法的入参检查,尤其是那些供其他人调用的方法。

在执行方法的具体的逻辑之前检查参数的有效性、合法性,总比在正在执行方法的逻辑的时候因为参数无效或者不合法抛出异常来的爽快。试想:朋友邀请你去他家吃饭,你精心的打扮一番,坐了1个小时的公交才到朋友家,然后朋友告诉你家里锅破了吃所以还没做饭。。。此刻你的心情咋样??

那么在实际的应用中我们应该怎么实现“检查参数的有效性”呢?
在《Effective Java》一书中,是这么建议的:

对于共有方法,要用JavaDoc的@throws标签在文档中说明违反参数限制时会抛出的异常.

例子:

      /**
     *
     * @param username 用户名
     * @param password 密码
     * @throws NullPointerException if username or password is null.
     */
    @Override
    public void insert(String username,String password) {
        if (username == null || password == null){
            throw new NullPointerException("参数为空!");
        }
        // 将username和password封装成User对象,然后插入到数据库中(省略)
    }

对于未被导出的方法,作为包的创建者,你可以控制这个方法将在那些情况下被调用,因此你可以,也应该保证只将有效的参数值传递进来.因此,非公有的方法通常应该使用断言来检查他们的参数.

示例:

    /**
     * 格式化字符串
     *
     * @return
     */
    private String format(String s) {
        assert s != null;
        return s.trim();
    }

如果断言失败,就会抛出AssertionError异常。
反正这种方法我没有用过(捂脸)。。。
不过也是一种很好的思路啊。

上一篇 下一篇

猜你喜欢

热点阅读