J'ai du mal à comprendre pourquoi cela renvoie toujours une variable videValeur chaîne Catch Essayez dans Vb.net
Private Function checkEnvelopeStatus(aEnvelopeID As String) As String
Dim lEnvelopeStatusMessage As String
Try
Dim lEnvelopeStatus = mDsapi.RequestStatusEx(aEnvelopeID)
lEnvelopeStatusMessage = "Subject:" & lEnvelopeStatus.Subject & vbCrLf & "Status Code: " & lEnvelopeStatus.Status
Catch ex As Exception
MessageBox.Show(ex.StackTrace, ex.Message)
End Try
Return lEnvelopeStatusMessage
End Function
Pourtant, ce retourne le message que je veux
Private Function checkEnvelopeStatus(aEnvelopeID As String) As String
Dim lEnvelopeStatusMessage As String
Try
Dim lEnvelopeStatus = mDsapi.RequestStatusEx(aEnvelopeID)
aEnvelopeID = "Subject:" & lEnvelopeStatus.Subject & vbCrLf & "Status Code: " & lEnvelopeStatus.Status
Catch ex As Exception
MessageBox.Show(ex.StackTrace, ex.Message)
End Try
Return aEnvelopeID
End Function
Il semble que la valeur de la chaîne lorsqu'il s'agit d'une variable locale à la fonction est effacée après la fermeture de la capture TRy. Pourtant, quand je le remplace par le paramètre entrant je suis capable de préserver la chaîne externe au Try Catch? Je suis principalement un développeur C#/C++ donc c'est un comportement déroutant pour moi. Quelqu'un peut-il expliquer pourquoi cela pourrait arriver?
Voici une version beaucoup plus aseptisé du code ci-dessus
Public Function foo(a As String) As String
Dim b As String
Try
b = "banana:"
Catch ex As Exception
End Try
Return b
End Function
Il présente le même comportement.