Практическое руководство. Перехват исключений
Дата последнего изменения: 24 марта 2010 г.
Применимо к: SharePoint Server 2010
Разделы кода, которые могут создавать исключения, помещаются в блок try, а код, обрабатывающий исключения, — в блок catch. Порядок сегментов catch очень важен. При возникновении исключения оно передается по стеку и каждому блоку catch предоставляется возможность его обработать. Блок catch, которому надлежит обработать исключение, определяется на основе совпадения типа исключения с именем исключения, указанного в блоке catch. Например, следующий блок catch осуществляет перехват исключений SOAP:
catch (SoapException e)
{
Console.WriteLine("SOAP Exception Error Code: {0}",
e.SubCode.Code.Name);
Console.WriteLine("SOAP Exception Message is: {0}",
e.Message);
}
Catch e As SoapException
Console.WriteLine("SOAP Exception Error Code: {0}", e.SubCode.Code.Name)
Console.WriteLine("SOAP Exception Message is: {0}", e.Message)
End Try
Если блок catch для данного типа не существует, исключение перехватывается общим блоком catch при его наличии. Например, для перехвата общих исключений можно добавить следующий код:
catch (Exception e)
{
Console.WriteLine("Exception Message: {0}", e.Message);
}
Catch e As Exception
Console.WriteLine("Exception Message: {0}", e.Message)
End Try
Блок catch, предназначенный для перехвата определенных типов исключений, помещается перед общим исключением.
Среда CLR перехватывает исключения, не перехваченные блоком catch. В зависимости от настроек среды выполнения открывается окно отладки либо программа перестает выполняться и отображается диалоговое окно со сведениями об исключении. Сведения об отладке см. в статье Отладка и профилирование приложений (Возможно, на английском языке) (https://msdn.microsoft.com/ru-ru/library/7fe0dd2y(vs.71).aspx).
Дополнительные сведения о методах обработки исключений см. в статье Рекомендации по обработке исключений (Возможно, на английском языке) (https://msdn.microsoft.com/ru-ru/library/seyhszts(vs.71).aspx).
Пример
using System;
using System.Text;
using System.Web.Services.Protocols;
using ExcelWebService.myserver02;
namespace ExcelWebService
{
class WebService
{
[STAThread]
static void Main(string[] args)
{
// Instantiate the Web service and make a status array object
ExcelService xlservice = new ExcelService();
Status[] outStatus;
RangeCoordinates rangeCoordinates = new RangeCoordinates();
string sheetName = "Sheet1";
// Set the path to the workbook to open.
// TODO: Change the path to the workbook
// to point to a workbook you have access to.
// The workbook must be in a trusted location.
// If workbookPath is a UNC path, the application
// must be on the same computer as the server.
// string targetWorkbookPath =
// @"\\MyServer\myxlfiles\Formulas.xlsx";
string targetWorkbookPath =
"http://myserver02/DocLib/Shared%20Documents/Basic1.xlsx";
// Set credentials for requests
xlservice.Credentials =
System.Net.CredentialCache.DefaultCredentials;
try
{
// Call the OpenWorkbook method and point to the
// trusted location of the workbook to open.
string sessionId = xlservice.OpenWorkbook(targetWorkbookPath, "en-US", "en-US", out outStatus);
Console.WriteLine("sessionID : {0}", sessionId);
// Prepare object to define range coordinates,
// and call the GetRange method.
rangeCoordinates.Column = 0;
rangeCoordinates.Row = 0;
rangeCoordinates.Height = 18;
rangeCoordinates.Width = 10;
object[] rangeResult1 = xlservice.GetRange(sessionId, sheetName, rangeCoordinates, false, out outStatus);
Console.WriteLine("Total rows in range: " + rangeResult1.Length);
Console.WriteLine("Sum in last column is: " + ((object[])rangeResult1[2])[3]);
// Close the workbook. This also closes the session.
xlservice.CloseWorkbook(sessionId);
}
catch (SoapException e)
{
Console.WriteLine("SOAP Exception Error Code: {0}",
e.SubCode.Code.Name);
Console.WriteLine("SOAP Exception Message is: {0}",
e.Message);
}
catch (Exception e)
{
Console.WriteLine("Exception Message: {0}", e.Message);
}
Console.ReadLine();
}
}
}
Imports System
Imports System.Text
Imports System.Web.Services.Protocols
Imports ExcelWebService.myserver02
Namespace ExcelWebService
Friend Class WebService
<STAThread> _
Shared Sub Main(ByVal args() As String)
' Instantiate the Web service and make a status array object
Dim xlservice As New ExcelService()
Dim outStatus() As Status
Dim rangeCoordinates As New RangeCoordinates()
Dim sheetName As String = "Sheet1"
' Set the path to the workbook to open.
' TODO: Change the path to the workbook
' to point to a workbook you have access to.
' The workbook must be in a trusted location.
' If workbookPath is a UNC path, the application
' must be on the same computer as the server.
' string targetWorkbookPath =
' @"\\MyServer\myxlfiles\Formulas.xlsx";
Dim targetWorkbookPath As String = "http://myserver02/DocLib/Shared%20Documents/Basic1.xlsx"
' Set credentials for requests
xlservice.Credentials = System.Net.CredentialCache.DefaultCredentials
Try
' Call the OpenWorkbook method and point to the
' trusted location of the workbook to open.
Dim sessionId As String = xlservice.OpenWorkbook(targetWorkbookPath, "en-US", "en-US", outStatus)
Console.WriteLine("sessionID : {0}", sessionId)
' Prepare object to define range coordinates,
' and call the GetRange method.
rangeCoordinates.Column = 0
rangeCoordinates.Row = 0
rangeCoordinates.Height = 18
rangeCoordinates.Width = 10
Dim rangeResult1() As Object = xlservice.GetRange(sessionId, sheetName, rangeCoordinates, False, outStatus)
Console.WriteLine("Total rows in range: " & rangeResult1.Length)
Console.WriteLine("Sum in last column is: " & (CType(rangeResult1(2), Object()))(3))
' Close the workbook. This also closes the session.
xlservice.CloseWorkbook(sessionId)
Catch e As SoapException
Console.WriteLine("SOAP Exception Error Code: {0}", e.SubCode.Code.Name)
Console.WriteLine("SOAP Exception Message is: {0}", e.Message)
Catch e As Exception
Console.WriteLine("Exception Message: {0}", e.Message)
End Try
Console.ReadLine()
End Sub
End Class
End Namespace
См. также
Задачи
Пошаговое руководство. Разработка настраиваемого приложения с помощью веб-служб Excel
Инструкции по определению надежного расположения
Практическое руководство. Сохранение из клиента Excel на сервер
Использование свойства SubCode для получения кодов ошибок