Обновление: Непосредственно не ответ, но обновление до последних управляемых сборок Oracle.ManagedDataAccess, похоже, решает проблему. После выполнения обновления больше не возникало никаких исключений.
Но я до сих пор не представляю, почему предложение catch оказалось неспособным поймать исключение ...
Может быть, я здесь что-то не так, но похоже, что происходящее исключение OracleException не было обнаружено. Время от времени я получаю следующее сообщение в журналах небольшого приложения, читающего данные статьи из таблицы базы данных. Там нет информации о том, что идет не так.
2018-09-04T14:52:41.05+02:00 TRACE - | / -> ENTER Program:currentAppDomain_UnhandledException
2018-09-04T14:52:41.06+02:00 ERROR - | | unhandled exception occurred Oracle.DataAccess.Client.OracleException bei Oracle.DataAccess.Client.OracleException.GetOpoErr(IntPtr opsErrCtx, Int32 arrayBindIndex, String dataSrc, String procedure)
bei Oracle.DataAccess.Client.OracleException.GetOpoErrCtx(IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, IntPtr opsConCtx, String dataSrc, String procedure)
bei Oracle.DataAccess.Client.OracleException..ctor(IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, IntPtr opsConCtx, String dataSrc, String procedure)
bei Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)
bei Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src, Boolean bCheck)
bei Oracle.DataAccess.Client.OracleDataReader.Read()
bei #####.Database.DBAccess.LoadModuleParameters[T](String artikelsn, String modulsn, String serial, IHLogger logger) in d:\dev\#####\DBAccess.cs:Zeile 1949.
2018-09-04T14:52:41.87+02:00 TRACE - | \ <- LEAVE (00:00:00.82) Program:currentAppDomain_UnhandledException
Считывание кода из таблицы базы данных выглядит следующим образом.
var conn = DBAccess.connect(ADDDataToDB.loginData);
try
{
using (var command = conn.CreateCommand())
{
command.CommandText = "SELECT * FROM ...";
command.Parameters.Add(new OracleParameter(":a...
command.Parameters.Add(new OracleParameter(":m...
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
// do something with retrieved data
}
}
}
}
catch (Exception ex)
{
if (logger != null)
...
Почему исключение не попадает в блок catch
, а вместо этого попадает в обработчик AppDomain
UnhandledException
.