Gérer les exceptions dans votre code

 

Date de publication : janvier 2017

S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Plusieurs exceptions peuvent être retournées à partir d’un appel de méthode du service Web Microsoft Dynamics 365. La conception de votre application doit intercepter et gérer correctement ces exceptions. Dans le SDK de Microsoft Dynamics 365, tous les appels de méthode du service Web utilisent un canal de communication avec le serveur basé sur la technologie Windows Communication Foundation (WCF). En termes WCF, les exceptions retournées par le canal sont appelées défauts.

Contenu de la rubrique

Exceptions et défauts courants

Erreurs personnalisées des règles d'entreprise

Informations supplémentaires sur les exceptions

Exceptions et défauts courants

Le code suivant est utilisé dans la plupart des exemples du SDK de Microsoft Dynamics 365. Il décrit les défauts et exceptions courants que la conception de votre application doit gérer.


catch (FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault> ex)
{
    Console.WriteLine("The application terminated with an error.");
    Console.WriteLine("Timestamp: {0}", ex.Detail.Timestamp);
    Console.WriteLine("Code: {0}", ex.Detail.ErrorCode);
    Console.WriteLine("Message: {0}", ex.Detail.Message);
    Console.WriteLine("Inner Fault: {0}",
        null == ex.Detail.InnerFault ? "No Inner Fault" : "Has Inner Fault");
}
catch (System.TimeoutException ex)
{
    Console.WriteLine("The application terminated with an error.");
    Console.WriteLine("Message: {0}", ex.Message);
    Console.WriteLine("Stack Trace: {0}", ex.StackTrace);
    Console.WriteLine("Inner Fault: {0}",
        null == ex.InnerException.Message ? "No Inner Fault" : ex.InnerException.Message);
}
catch (System.Exception ex)
{
    Console.WriteLine("The application terminated with an error.");
    Console.WriteLine(ex.Message);

    // Display the details of the inner exception.
    if (ex.InnerException != null)
    {
        Console.WriteLine(ex.InnerException.Message);

        FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault> fe = ex.InnerException
            as FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault>;
        if (fe != null)
        {
            Console.WriteLine("Timestamp: {0}", fe.Detail.Timestamp);
            Console.WriteLine("Code: {0}", fe.Detail.ErrorCode);
            Console.WriteLine("Message: {0}", fe.Detail.Message);
            Console.WriteLine("Trace: {0}", fe.Detail.TraceText);
            Console.WriteLine("Inner Fault: {0}",
                null == fe.Detail.InnerFault ? "No Inner Fault" : "Has Inner Fault");
        }
    }
}

Notes

Si vous accédez au service Web de découverte, votre code doit intercepter DiscoveryServiceFault au lieu du défaut OrganizationServiceFault indiqué précédemment.

Outre ces exceptions et défauts, votre code doit gérer les exceptions suivantes :

Lors de la connexion à Microsoft Dynamics 365 (Online), une exception SecurityAccessDeniedException peut être levée si vous utilisez un Compte Microsoft valide et que votre compte Windows Live n’est pas associé à une organisation Microsoft Dynamics 365 (Online). Une exception MessageSecurityException peut être levée si votre Compte Microsoft n'est pas valide ou qu'il existe une erreur d'authentification.

Erreurs personnalisées des règles d'entreprise

Avec Microsoft Dynamics 365 et Microsoft Dynamics 365 (Online), les personnalisateurs peuvent créer des règles d'entreprise qui sont évaluées sur le serveur. Les personnalisateurs peuvent déclencher des messages d'erreur sur les conditions définies dans la règle métier. Les développeurs doivent être sûrs d'inclure une gestion fiable des erreurs pour attraper et gérer ces exceptions.

Ci-après figure un exemple du journal des traces produit lorsqu'une de ces erreurs est retournée d'une règle métier nommée « Name of Entity Scope Business Rule returning Error » et que le message d'erreur est « custom error message ».

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: custom error messageDetail: 
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://schemas.microsoft.com/xrm/2011/Contracts">
  <ErrorCode>-2147220891</ErrorCode>
  <ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic">
    <KeyValuePairOfstringanyType>
      <d2p1:key>OperationStatus</d2p1:key>
      <d2p1:value xmlns:d4p1="http://www.w3.org/2001/XMLSchema" i:type="d4p1:string">0</d2p1:value>
    </KeyValuePairOfstringanyType>
    <KeyValuePairOfstringanyType>
      <d2p1:key>SubErrorCode</d2p1:key>
      <d2p1:value xmlns:d4p1="http://www.w3.org/2001/XMLSchema" i:type="d4p1:string">-2146233088</d2p1:value>
    </KeyValuePairOfstringanyType>
  </ErrorDetails>
  <Message>custom error message</Message>
  <Timestamp>2014-09-04T17:43:16.8197965Z</Timestamp>
  <InnerFault i:nil="true" />
  <TraceText>

[Microsoft.Crm.ObjectModel: Microsoft.Crm.ObjectModel.SyncWorkflowExecutionPlugin]
[cf6a25a9-5a34-e411-80b9-00155dd8c20f: ]
Starting sync workflow 'Name of Entity Scope Business Rule returning Error', Id: c76a25a9-5a34-e411-80b9-00155dd8c20f
Entering ConditionStep1_step: 
Entering SetMessage_step: 
Sync workflow 'Name of Entity Scope Business Rule returning Error' terminated with error 'custom error message'

</TraceText>
</OrganizationServiceFault>

Pour plus d'informations :TechNet : créer et modifier des règles métier.

Informations supplémentaires sur les exceptions

Lorsqu’une exception non interceptée contenant des informations confidentielles que l’utilisateur n’est pas autorisé à voir est levée, ces informations confidentielles dans l’exception sont masquées à l’utilisateur et un numéro de référence est fourni. Ce numéro de référence fait référence à l’entrée du journal des événements du serveur et à l’entrée de suivi du serveur associées. Un administrateur système peut rechercher ces entrées et trouver des informations supplémentaires sur l’exception.

Voir aussi

Résolution des problèmes et gestion des erreurs
Conseils de dépannage
Web service error codes
Gérer les exceptions dans les plug-ins
Centre de développement .NET Framework

Microsoft Dynamics 365

© 2017 Microsoft. Tous droits réservés. Copyright