Как я могу изменить Message
объекта Exception в C #?
Bonus Chatter
Свойство Message
Exception
является только для чтения :
public virtual string Message { get; }
Дополнительное чтение
На тот же вопрос в PHP ответили «Вы не можете» , но дал обходной путь:
Однако вы можете определить его имя и код класса и добавить новый, того же класса, с тем же кодом, но с другим сообщением.
Как определитьимя класса исключения и добавьте новый в том же классе, но с другим сообщением, в C #?
, например:
catch (Exception e)
{
Exception e2 = Activator.CreateInstance(e.GetType());
throw e2;
}
не работает, потому что свойство Message
исключения только для чтения и .NET.См. Оригинальный вопрос.
Обновление
Я пытался перехватить каждый ожидаемый тип исключения:
try
{
reader.Read();
}
catch (OleDbException e)
{
throw new OleDbException(e, sql);
}
catch (SqlException e)
{
throw new SqlException (e, sql);
}
catch (IBM.DbException e)
{
throw new IBM.DbException(e, sql);
}
catch (OdbcException e)
{
throw new OdbcException (e, sql);
}
catch (OracleException e)
{
throw new OracleException (e, sql);
}
За исключением того, что теперь мой кодвызывает зависимость от сборок, которые не будут присутствовать в каждом решении.
Кроме того, теперь, похоже, исключение исходит из моего кода, а не из строки, которая его вызвала;я теряю информацию о местонахождении исключения