これが常に空の変数を返す理由を理解するのに苦労しています
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
しかし、これは私が望むメッセージを返します
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
関数に対してローカルな変数である場合の文字列の値は、TRyキャッチが閉じた後にクリアされているようです。それでも、入ってくるパラメーターで置き換えると、Try Catchの外部の文字列を保持できますか?私は主にC#/ C ++開発者なので、これは私にとって紛らわしい振る舞いです。なぜこれが起こるのか誰かが説明できますか?
上記のコードのはるかにサニタイズされたバージョンは次のとおりです
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
同じ動作を示します。