Freigeben über


Gewusst wie: Abfangen von Ausnahmen

Letzte Änderung: Mittwoch, 24. März 2010

Gilt für: SharePoint Server 2010

Die Codeabschnitte, die möglicherweise Ausnahmen auslösen, platzieren Sie in einem try-Block, und Code, der Ausnahmen behandelt, platzieren Sie in einem catch-Block. Dabei ist die Reihenfolge der catch-Anweisungen wichtig. Wenn eine Ausnahme auftritt, wird sie im Stapel aufwärts übergeben, und jeder catch-Block bekommt die Gelegenheit, die Ausnahme zu behandeln. Welcher catch-Block die Ausnahme behandeln sollte, wird durch Abgleichen des Typs der Ausnahme mit dem Namen der Ausnahme ermittelt, der im catch-Block angegeben ist. Beispielsweise fängt der folgende catch-Block SOAP-Ausnahmen (Simple Object Access Protocol) ab:

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

Ist kein typspezifischer catch-Block vorhanden, wird die Ausnahme von einem allgemeinen catch-Block abgefangen, sofern ein solcher vorhanden ist. Beispielsweise können Sie allgemeine Ausnahmen durch Hinzufügen des folgenden Codes abfangen:

catch (Exception e)
{
    Console.WriteLine("Exception Message: {0}", e.Message);
}
Catch e As Exception
    Console.WriteLine("Exception Message: {0}", e.Message)
End Try

Catch-Blöcke, die für bestimmte Typen von Ausnahmen vorgesehen sind, platzieren Sie vor einer allgemeinen Ausnahme.

Durch die Common Language Runtime werden Ausnahmen abgefangen, die nicht durch einen catch-Block abgefangen wurden. Je nach Konfiguration der CLR wird entweder ein Dialogfeld zum Debuggen angezeigt oder das Programm wird beendet und ein Dialogfeld mit Ausnahmeinformationen angezeigt. Weitere Informationen zum Debuggen finden Sie unter Debuggen von und Profilerstellung für Anwendungen (https://msdn.microsoft.com/library/default.asp?url=/library/de-de/cpguide/html/cpcondebuggingprofiling.asp).

Weitere Informationen zum Behandeln von Ausnahmen finden Sie unter Bewährte Methoden für die Ausnahmebehandlung (https://msdn.microsoft.com/de-de/library/seyhszts(vs.71).aspx).

Beispiel

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

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Entwickeln einer benutzerdefinierten Anwendung mithilfe der Excel-Webdienste

Gewusst wie: Festlegen eines Speicherorts als vertrauenswürdig

Gewusst wie: Speichern im Excel-Client auf dem Server

Gewusst wie: Verwenden der "SubCode"-Eigenschaft zum Abfangen von Fehlercodes

Konzepte

Zugreifen auf die SOAP-API

Excel Services Alerts

Bekannte Probleme und Tipps für Excel Services

Loopback-SOAP-Aufrufe und direkte Verknüpfung