2016-05-13 118 views
-1

我想写一个方法trycatch其中,我从Web服务获取数据,并返回数据为string[]“不是所有的代码路径都返回一个值”错误BLL

我很努力地返回值。你介意看我的代码?:

public static string[] UserDetailsWebService(string username, string password) 
{ 
    string[] array = null; 

    using(WebServiceUser.Users use = new WebServiceUser.Users()) 
    { 
     try 
     { 
      WebServiceUser.UserGridList Grid = use.GetUserDetails(username, password, username); 

      array = new string[] { Grid.FirstName, Grid.LastName }; 
     } 
     catch (Exception ex) 
     { 
      if (ex is NullReferenceException || ex is HttpResponseException 
       || ex is WebException || ex is System.Net.Sockets.SocketException) 
      { 
       //throws etc... 
      } 
      else 
      { 
       //throws etc... 
      } 
     } 
     return array; 
    } 
} 

的问题是,我得到这个错误:

并非所有的代码路径返回一个值。

+0

如果抛出异常,'return'不会被击中。你还需要'try/catch'之外的'return array'吗? –

+0

我还会捕获具有catch-em-all'catch(Exception)'块的特定异常。这会让你的代码更清洁。 –

+0

嘿家伙,问题不是catch(异常),我只需要返回从web服务取得的数据,这意味着string []数组,我不知何故在那里做错了什么,我不能填充数组并返回它。 – SmackDat

回答

4

请注意,这里的函数应该返回一个数组string

在功能块的末尾移动return array;确保我们始终返回某些内容。

public static string[] UserDetailsWebService(string username, string password) 
{ 
    string[] array = null; 

    using (WebServiceUser.Users use = new WebServiceUser.Users()) 
    { 
     try 
     { 
      WebServiceUser.UserGridList Grid = use.GetUserDetails(username, password, username); 

      array = new string[] { Grid.FirstName, Grid.LastName }; 
     } 
     catch (Exception ex) 
     { 
      if (ex is NullReferenceException || ex is HttpResponseException 
       || ex is WebException || ex is System.Net.Sockets.SocketException) 
      { 
       //throws etc... 
      } 
      else 
      { 
       //throws etc... 
      } 
     } 
    } 

    return array; 
} 
+1

这应该如何解决问题?我看到的唯一区别是你把'return'移到''使用' –

+2

之外'我不认为这是解决方案。 '使用'块内的“返回”是完全可以接受的,不需要将它移到外面。 –

+0

假设'try'块中存在错误(在您的代码中)。在这种情况下,没有任何回报。 –

相关问题