OracleException не попадает в приложение C #? - PullRequest
0 голосов
/ 04 сентября 2018

Обновление: Непосредственно не ответ, но обновление до последних управляемых сборок 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...