一个方法设计问题?

设计一个方法,要求:

1.客户端代码可以知道此方法是否执行成功;
2.当执行失败时,返回给客户端代码未能成功执行的原因。

一个实现方式是:

    public string myMethod(){
        if(....) return "方法执行失败!因为......";
        return null;
    }

    //客户端调用
    public void maim(string [] args){
        stirng msg = myMethod();
        if(msg == null)
            ...
        else 
            ...
    }

客户端调用时,当返回结果为null时,此方法执行成功,否则失败,并且返回字符串为失败原因。感觉这种实现方式不是很好,返回字符串并不符合一个变量只有一个含义的原则。

ps:回答没有语言限制,但是最好和特殊的语言特性无关。

阅读 1.7k
评论
    4 个回答

    返回code加msg的格式,code用于计算机识别,msg用于人类识别。客户端可以通过code值做一些处理,比如返回-1代表服务器端处理失败,msg可以描述失败原因。但是客户端不一定会使用msg,客户端捕获都-1信号时,就跳转到另外一个页面。
    作为服务提供方,应该考虑客户端的多样性,如果单纯的返回描述字符串,就与客户端耦合了。
    e.g. {code : -1,msg : '用户未登录,没有权限调用此方法'};
    当然如果这个方法只是内部使用,就无须这么麻烦了,返回约定值就行了。

      返回个map么,远程调用的话,就返回个json,这样里面想放什么就放什么

        不考虑其他仅考虑返回的话,应该有两种方式:
        1. 使用map格式化返回的信息,将操作结果和提示信息分开。
        2. 自定义通用的返回类,规范返回信息。

        通常在web应用中的ajax请求返回都是这样的方式。

        这个是否符合题主所述问题?

          设置一个信号量不好么,这样还能考虑多线程的情况,像http请求返回的json格式也行啊

            撰写回答

            登录后参与交流、获取后续更新提醒