方法通过异常与返回值达到双类型返回值效果

来源:互联网 发布:b2b网络平台建设方案 编辑:程序博客网 时间:2024/06/01 07:44

在写方法的时候我们很多时候会碰到这种情况:

       情况一 的时候我们要返回对象,

       情况二的时候我们想返回字符串甚至另一个对象了,

     

       但是返回值类型设置成对象了,这时候我们怎么处理呢;


       那么现在我们就可以用到异常了

    

public User getUser(String id) throws Exception{        User user = userService.getById(id);        if(user == null){            throw new Exception("震惊!蝙蝠侠竟然不存在!!!");        }else {            return user;        }    }    public void test(){        try{            User user = getUser("蝙蝠侠");            System.out.println(user.toString());        }catch (Exception e){            System.out.println(e.getMessage());        }    }

      上述代码中返回值为 User, 但是 如果user不存在的话需要返回字符串,这种情况 就要把字符串通过异常抛出去, 然后在调用方法的时候进行异常的处理, 从而获取所需要的数据;


     抛异常不仅限于字符串还有很多类型的都可以,我想要用异常抛一个对象回去的话,我可以用Gson把对象转换成json,然后当字符串传给Exception, 抛出去,回头直接获取,再转回对象就行了;


    当然用Exception只是为了简单,在正常开发中有什么特殊需求的话,需要自己自定义异常类进行处理相关数据,


    异常里边可以传一个参数也可以两个也可以三个;

 

    有些有特殊需求的异常也用到collection;




 

/** *  */package chengzi;/** * @author chengzi * */public class Test {public static void main(String[] args) {Test test = new Test();try{        String user = test.getUser("蝙蝠侠");//            System.out.println(user.toString());        }catch (Exception e){            System.out.println(e.getMessage());        }}public String getUser(String id) throws Exception{        String user = null;        if(!id.equals("蝙蝠侠")){        user = "震惊!蝙蝠侠来了!!!";        }        if(user == null){            throw new Exception("震惊!蝙蝠侠竟然不存在!!!");        }else {            return user;        }    }}