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