Я регистрирую ошибки и отправляю себе журналы исключений! Как следующий код
private void ExceptionForm_Load(object sender, EventArgs e)
{
Type exceptionType = _exception.GetType();
txtErrorMessage.Text = _exception.ToString();
if (exceptionType == typeof(Sybase.DataWindow.DbErrorException))
{
_exception = (Sybase.DataWindow.DbErrorException)_exception;
txtErrorMessage.Text += "Exception SQL data:" + exception;
}
}
Теперь проблема вот в чем. if (exceptionType == typeof (Sybase.DataWindow.DbErrorException)) тогда _exception имеет дополнительные свойства, такие как SqlSyntax, который пошел не так (например, обновить что-то из таблицы) Проблема в том, как отобразить эти данные. Кажется, это не мое исключение. exceptiontype = DbErrorException, но я не могу применить к нему свой _exception. Или это плохая практика? Или мне просто удалить все и установить блок приложения обработки исключений из MS?





Проблема не в приведении типов, а в том, что ваша переменная _exception (предположительно) имеет тип Exception. Вам нужно объявить новую переменную правильного типа. Кроме того, есть ли у вас причина использовать GetType () вместо «as» или «is»? А как насчет производных исключений? Попробуй это:
private void ExceptionForm_Load(object sender, EventArgs e)
{
DbErrorException specificException = _exception as DbErrorException;
if (specificException != null)
{
txtErrorMessage.Text += "SqlSyntax = " + specificException.SqlSyntax;
}
}
Похоже, это Джон! Не знал о «как» и «есть». Мое _exception действительно относится к типу Exception (потому что я отправляю все свои исключения в эту «форму журнала»). Должен ли я преобразовывать все данные моего исключения в определенный тип исключения, если мне нужны все данные? (например, webexception, socketexception)
Бесконечно благодарен! ps; Забавный факт, что неделю назад я случайно прочитал ваши темы в статье на C# :) Хорошая статья!
«As» эффективно выполняет приведение (когда он действителен; когда это не так, он возвращает ноль). Вам нужно выполнить приведение только в том случае, если ни одно из существующих свойств Exception не дает вам достаточно информации.