0

Я новичок в разработке sharepoint, и мне нужна ваша помощь, чтобы дать мне совет, как обрабатывать потенциальные исключения в моем коде. У меня есть этот метод с User user как параметр, в котором я обнаруживаю, кто является текущим пользователем, поэтому я могу сделать запрос и вернуть информацию в соответствии с его именем от SharePoint List. Каковы возможные исключения, которые мне нужно обрабатывать, и что такое «хорошая» практика?Правильный способ обработки исключений в проекте SharePoint 2010

Спасибо за ваше время и ваши ответы.

Вот код, который я написал до сих пор:

public void SomeMethod(User user) 
{ 
    if (user == null) 
    { 
     throw new ArgumentNullException("Employee object is not created"); 
    } 

    try 
    { 
     using (SPSite currentSite = new SPSite("SiteName")) 
     { 
      if (currentSite == null) 
      { 
       throw new System.UriFormatException("Invalid URL"); 
      } 
      using (SPWeb currentWeb = currentSite.OpenWeb()) 
      { 
       if (currentWeb.CurrentUser == null) 
       { 
        throw new Exception("User is not logged in"); 
       } 
       user.Name = currentWeb.CurrentUser.Name; 

       if (currentWeb.Lists["ListName"] == null) 
       { 
        throw new Exception("There is no list with that name"); 
       } 
       SPList myList = currentWeb.Lists["ListName"]; 
       SPQuery queryRole = new SPQuery(); 

       queryRole.Query = "SomeQuery"; 


        } 
       } 
      } 
     } 
    } 
    catch (UriFormatException ex) 
    { 
     throw new UriFormatException(ex.Message); 
    } 
    catch (ArgumentNullException ex) 
    { 
     throw new ArgumentNullException(ex.Message); 
    } 
    catch (Exception ex) 
    { 
     throw new Exception(ex.Message); 
    } 

ответ

0

Я предполагаю, что вы удалили некоторые вещи в целях обеспечения конфиденциальности, потому что им удалось выяснить, что вы пытаетесь достичь. Если вам нужен текущий пользователь в зависимости от контекста, в котором этот метод работает (Webpart/.aspx/etc.), Вы можете просто использовать SPContext.Current.Web.CurrentUser

Если это автономное настольное приложение, вы должны сделать новый веб-интерфейс, как вы уже это делаете, но который все еще не объясняет строку «user.Name = ...».

Чтобы хоть как-то решить вопрос, совершенно бессмысленно создавать исключение, чтобы просто поймать его, а затем выбросить его снова.

throw new UriFormatException("..."); 
... 
catch(UriException ex) 
{ 
    throw new UriFormatException(ex.Message); 
} 

Общее правило заключается в том, чтобы вызывать исключения только в том случае, если вы хотите и можете их обрабатывать. Ни один из ваших блоков catch не обрабатывает исключение, поэтому вы также можете удалить их все.

Чтобы выяснить возможные исключения документации MSDN является хорошей отправной точкой для начала из:

SPSite(string url)

SPQuery

Here вопрос о Sharepoint обработки исключений