Ambil pernyataan coba-tangkap berikut di WCF-Service
Try
'Here some method is being called.
Return myBs.PerformDailyUpdate()
Catch ex As Exception 'Exception is not being caught here
If service IsNot Nothing AndAlso service.HasWarnings Then
TextFileTracer.Write(String.Format("Warning in method: '{0}'.", name))
TextFileTracer.Write(service.GetWarnings)
End If
Try
TextFileTracer.Write("Error in dbmanager: " & service.HasErrors.ToString)
Catch ex2 As Exception
End Try
TextFileTracer.Write(String.Format("Error in method: '{0}'.", name))
TextFileTracer.Write(ex.Message & vbCrLf & ex.StackTrace)
End Try
End Function 'Exception shows here while debugging
Dalam metode itu (PerformDailyUpdate
) sebuah ASMX-Webservice (.Net 2.0)
dipanggil. Layanan web ini kadang-kadang memunculkan SOAPException
yang disebabkan oleh metode yang dipanggil dari layanan web itu. Namun entah bagaimana SOAPException ini tidak tertangkap oleh metode di atas.
Pertanyaan Saya: Mengapa SOAPException tidak Tertangkap? Apakah ada beberapa karakteristik yang membedakan Pengecualian SOAP dari 'pengecualian' normal yang dihasilkan (yang pada gilirannya menyebabkannya tidak tertangkap)?
Catatan: Kode yang ditulis di sini bukan milik saya. Jadi Tolong jangan menilai saya berdasarkan hal itu
ExceptionMessage (Bagian pertama)
System.Web.Services.Protocols.SoapException: Unexpected application error: SqlException.
ADF.ExceptionHandling.GlobalExceptions.UnexpectedException: Unexpected application error: SqlException.
System.Data.SqlClient.SqlException: Incorrect syntax near ')'.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
....
Terima kasih
Scheme (how this clarifies the situation somewhat):
Internal DailyTriggerMechanism -----> WCF - Service -----> ASMX-Webservice ----> DB2/SQL
(Origin code above) (Exception being thrown)
Di dalam Layanan WCF, data yang diterima dimanipulasi untuk mengisi tabel tertentu. Layanan AMSX-Web mungkin tidak berubah dalam situasi ini.
FaultException
atau mungkinFaultException<T>
, bukanSoapException
. Kedua, jikacatch (Exception ex)
tidak menangkap pengecualian, berarti tidak ada pengecualian yang dilemparkan. - person John Saunders   schedule 30.01.2014