Как узнать какое исключение возникло в C#

  • Автор темы Автор темы evgen_po
  • Дата начала Дата начала

evgen_po

Client
Регистрация
27.08.2013
Сообщения
858
Реакции
533
Баллы
93
Есть код С#:
Код:
Развернуть Свернуть Копировать
//Отправка капчи из картинки

var captcha__get = project.Variables["path_to_captcha"].Value;
var image = System.Drawing.Image.FromFile(@captcha__get);

string base64String = String.Empty;

using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
    image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
    byte[] imageBytes = ms.ToArray();

    base64String = Convert.ToBase64String(imageBytes);
}

var result = ZennoPoster.CaptchaRecognition("Anti-Captcha.dll", base64String, "");
image.Dispose();
return result;
Код отправляет капчту на разгадывание и получает ответ от сервиса.
В шаблоне есть Bad End, по которому я получаю ActionId. И ActionId указывает мне, что ошибка возникает в этом кубике. Ошибка редкая - но встречается, у клиента. У меня нет.
Как я понимаю, возникает какое-то исключение.
Например, если переменная project.Variables["path_to_captcha"].Value будет пустая - то в лог программы будет записано "Путь имеет недопустимую форму". Это просто как пример, потому как в шаблоне перед этим кубиком стоит проверка этой переменной на пустоту.
Вопрос: как мне получить не ActionId, а именно текст возникающего исключения? Сутками сидеть и смотреть что пишется в логе - не вариант, т.к. ошибка возникает редко, и таким образом ее не отловить.
 
Можно использовать пошаговую отладку кода:
Пошаговая отладка C#.png
 
  • Оценить
Реакции: Sergodjan
Можно использовать пошаговую отладку кода:
Посмотреть вложение 26670
Вы наверное невнимательно прочитали, то что я описал. Исключение возникает редко. Сам кубик рабочий. Возникает у клиента. Отладка мне тут никак не поможет. Но, спасибо!
 
Вы наверное невнимательно прочитали, то что я описал. Исключение возникает редко. Сам кубик рабочий. Возникает у клиента. Отладка мне тут никак не поможет. Но, спасибо!
Могу с 90% уверенностью заявить, что ошибка происходит при работе с битым изображением.
Вероятно, что изображение (каптча) не скачалась до конца, поэтому и происходит исключение.

Чтобы в этом убедиться, зафиксируйте путь к изображению в момент ошибки. И посмотрите, цел ли файл.
 
Последнее редактирование:
  • Оценить
Реакции: evgen_po
Могу со 90% уверенностью заявить, что ошибка происходит при работе с битым изображением.
Вероятно, что изображение (каптча) не скачалась до конца, поэтому и происходит исключение.

Чтобы в этом убедиться, зафиксируйте путь к изображению в момент ошибки. И посмотрите, цел ли файл.
Да, спасибо! Я тоже такое подразумеваю. Но, когда разбирал проблему, возник интересный для меня вопрос, как все таки отлавливать тексты этих исключений. Т.к. периодически в разных шабах в разных кодах возникают непонятки, а как их удобнее логировать не знал. Сейчас уже знаю!
 
Да, спасибо! Я тоже такое подразумеваю. Но, когда разбирал проблему, возник интересный для меня вопрос, как все таки отлавливать тексты этих исключений. Т.к. периодически в разных шабах в разных кодах возникают непонятки, а как их удобнее логировать не знал. Сейчас уже знаю!
Да, полезно, но в данном случае - это неинформативное "Недостаточно памяти".
Что в своё время сбило меня столку: http://zennolab.com/discussion/threads/csharp-owncode-out-of-memory.25503/
 
  • Оценить
Реакции: evgen_po
вывод исключений разный можно сделать, надо эксперементировать
например, это в xNet

2018-01-30_013821.png

и в любом try{}catch{} можно сделать чтобы разные исключения выдавались, но думаю этого должно хватить чтобы понять ошибку
я всегда сначала обварачиваю, чтобы не ставить сравнения всякие, убрать потом после отладки никогда не долго

P.S. и прежде чем отправлять думаю лучше ставить проверку на размер файла, он если битый то сильно отличается, значит не посылаем и лишний раз сервер зенки не ложим ))))
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)