在SharePoint 2010项目中处理异常的正确方法

时间:2016-01-31 08:45:50

标签: exception sharepoint exception-handling sharepoint-2010

我是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);
    }

1 个答案:

答案 0 :(得分: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异常处理的问题