我是sharepoint开发的新手,我需要你的帮助,向我提供如何在我的代码中处理潜在异常的建议。我有User user
作为参数的此方法,我在其中检测谁是当前用户,因此我可以根据SharePoint List
的名称进行查询并返回信息。我需要处理哪些可能的例外情况,以及这样做的“好”做法是什么?
感谢您的时间和答案。
这是我到目前为止编写的代码:
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 :(得分:0)
我认为您出于隐私目的删除了一些内容,因为我无法弄清楚您要实现的目标。 如果您需要当前用户,具体取决于此方法运行的上下文(Webpart / .aspx / etc.),您可以使用SPContext.Current.Web.CurrentUser
如果这是一个独立的桌面应用程序,你必须以你已经在做的方式创建一个新网站,但仍然没有解释“user.Name = ...”行。
至少在某种程度上解决这个问题,创建一个异常只是为了自己捕获它然后再次抛出它是毫无意义的。
throw new UriFormatException("...");
...
catch(UriException ex)
{
throw new UriFormatException(ex.Message);
}
一般规则是只捕获异常(如果需要)并且可以处理它们。没有任何catch块实际上处理异常,所以你可以将它们全部删除。
要找出潜在的异常,msdn文档是一个很好的开始:
Here是关于sharepoint异常处理的问题