Partager via


Procédure : intercepter des exceptions

Placez les sections de code susceptibles de lever des exceptions dans un bloc try, puis placez le code qui gère les exceptions dans un bloc catch. L'ordre des instructions catch est important. Lorsqu'une exception se produit, elle remonte la pile et chaque bloc catch a la possibilité de la traiter. Le bloc catch qui doit gérer l'exception est déterminé par la mise en correspondance du type de l'exception et du nom de l'exception spécifié dans le bloc catch. Par exemple, le bloc catch suivant intercepte les exceptions SOAP (Simple Object Access Protocol) :

catch (SoapException e)
{
    Console.WriteLine("SOAP Exception Error Code: {0}", 
        e.SubCode.Code.Name);
    Console.WriteLine("SOAP Exception Message is: {0}", 
        e.Message);
}

Si aucun bloc catch spécifique n'existe, l'exception est interceptée par un bloc catch général, le cas échéant. Vous pouvez par exemple intercepter des exceptions générales en ajoutant le code suivant :

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

Placez les blocs catch ciblés pour des exceptions spécifiques avant un bloc catch d'exception général.

Le Common Language Runtime intercepte des exceptions qui ne le sont pas par un bloc catch. Selon la configuration du runtime, une boîte de dialogue de débogage s'affiche ou le programme cesse de s'exécuter et une boîte de dialogue contenant des informations sur l'exception s'affiche. Pour plus d'informations sur le débogage, voir Debugging and Profiling Applications (en anglais), (https://msdn.microsoft.com/fr-fr/library/7fe0dd2y.aspx).

Pour plus d'informations sur la gestion des exceptions, voir Best Practices for Handling Exceptions (en anglais), (https://msdn.microsoft.com/fr-fr/library/seyhszts.aspx).

Exemple

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();
        }
    }
}

Voir aussi

Autres ressources

Accès à l'API SOAP
Alertes Excel Services
Problèmes connus et conseils relatifs à Excel Services
Appels SOAP de retour de boucle et liaison directe
Procédure pas à pas : développement d'une application personnalisée à l'aide des services Web Excel
How to: Capture Status Return Values
Procédure : approuver un emplacement
Procédure : approuver les emplacements des classeurs à l'aide de scripts
Procédure : enregistrer sur le serveur à partir du client Excel
Procédure : utiliser la propriété SubCode pour capturer des codes d'erreur