While using client object model in SharePoint 2010, many a times we come across situations where in we call the 
ctx.ExecuteQuery() method and some error occurs on the server due to which we get a 'ServerException' which does not give us the opportunity to make corrections in the operation that we are trying to do.
The ExceptionHandlingScope class models a try/catch behaviour for such situations.When we add the code within this scope,it is processed as if its present in a try/catch and gives the opportunity to correct the error in the catch/finally block.
For eg. lets take an example where in we are trying to update the description of a list using managed client object model.If the list does not exist in the target site, it will throw an exception.Now, in the catch block of the exception handling scope , we can create the list in the site and then update its description.
The code below demonstrates this:
This console application updates the description of the list named 'Test List'. If the list does not exist , the list is
created in the catch block and then the description is updated.
ctx.ExecuteQuery() method and some error occurs on the server due to which we get a 'ServerException' which does not give us the opportunity to make corrections in the operation that we are trying to do.
The ExceptionHandlingScope class models a try/catch behaviour for such situations.When we add the code within this scope,it is processed as if its present in a try/catch and gives the opportunity to correct the error in the catch/finally block.
For eg. lets take an example where in we are trying to update the description of a list using managed client object model.If the list does not exist in the target site, it will throw an exception.Now, in the catch block of the exception handling scope , we can create the list in the site and then update its description.
The code below demonstrates this:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint.Client;
namespace Sharepoint2010TestConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
           using (ClientContext ctx = new ClientContext("http://br-pc-341:2222"))
            {
                //Set up error handling
                ExceptionHandlingScope xScope = new ExceptionHandlingScope(ctx);
                using (xScope.StartScope())
                 {
                    using (xScope.StartTry())
                    {
                        //Try to update the description of a list named "Test List"
                        List testList = ctx.Web.Lists.GetByTitle("Test List");
                        testList.Description = "Test List Description";
                        testList.Update();
                    }
                    using (xScope.StartCatch())
                    {
                        //Fails if the list "Test List" does not exist
                        //So, we'll create a new list
                        ListCreationInformation testListCI = new ListCreationInformation();
                        testListCI.Title = "Test List";
                        testListCI.TemplateType = (int)ListTemplateType.GenericList;
                        testListCI.QuickLaunchOption = Microsoft.SharePoint.Client.QuickLaunchOptions.On;
                        List list = ctx.Web.Lists.Add(testListCI);
                    }
                    using (xScope.StartFinally())
                    {
                        //Try to update the list now if it failed originally
                        List testList = ctx.Web.Lists.GetByTitle("Test List");
                        if (testList.Description.Length == 0)
                        {
                            testList.Description = "Test List Description";
                            testList.Update();
                        }
                    }
                }
                //Execute the entire try-catch as a batch!
                ctx.ExecuteQuery();
                Console.WriteLine("Description Updated !!");
            }
        }
    }
}
This console application updates the description of the list named 'Test List'. If the list does not exist , the list is
created in the catch block and then the description is updated.
The list with the updated description can be seen on the sharepoint site:
 


 
 
No comments:
Post a Comment