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

evgen_po

Client
Регистрация
27.08.2013
Сообщения
848
Благодарностей
528
Баллы
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, а именно текст возникающего исключения? Сутками сидеть и смотреть что пишется в логе - не вариант, т.к. ошибка возникает редко, и таким образом ее не отловить.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
try
{
//тут сам код
}
catch (Exception ex)
{
//исключение
FileSystem.FileAppendString("C:\\Exception.txt", ex.Message, true);
}
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 270
Благодарностей
5 854
Баллы
113
Можно использовать пошаговую отладку кода:
Пошаговая отладка C#.png
 
  • Спасибо
Реакции: Sergodjan

evgen_po

Client
Регистрация
27.08.2013
Сообщения
848
Благодарностей
528
Баллы
93

evgen_po

Client
Регистрация
27.08.2013
Сообщения
848
Благодарностей
528
Баллы
93
Можно использовать пошаговую отладку кода:
Посмотреть вложение 26670
Вы наверное невнимательно прочитали, то что я описал. Исключение возникает редко. Сам кубик рабочий. Возникает у клиента. Отладка мне тут никак не поможет. Но, спасибо!
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 545
Баллы
113
Вы наверное невнимательно прочитали, то что я описал. Исключение возникает редко. Сам кубик рабочий. Возникает у клиента. Отладка мне тут никак не поможет. Но, спасибо!
Могу с 90% уверенностью заявить, что ошибка происходит при работе с битым изображением.
Вероятно, что изображение (каптча) не скачалась до конца, поэтому и происходит исключение.

Чтобы в этом убедиться, зафиксируйте путь к изображению в момент ошибки. И посмотрите, цел ли файл.
 
Последнее редактирование:
  • Спасибо
Реакции: evgen_po

evgen_po

Client
Регистрация
27.08.2013
Сообщения
848
Благодарностей
528
Баллы
93
Могу со 90% уверенностью заявить, что ошибка происходит при работе с битым изображением.
Вероятно, что изображение (каптча) не скачалась до конца, поэтому и происходит исключение.

Чтобы в этом убедиться, зафиксируйте путь к изображению в момент ошибки. И посмотрите, цел ли файл.
Да, спасибо! Я тоже такое подразумеваю. Но, когда разбирал проблему, возник интересный для меня вопрос, как все таки отлавливать тексты этих исключений. Т.к. периодически в разных шабах в разных кодах возникают непонятки, а как их удобнее логировать не знал. Сейчас уже знаю!
 

ibred

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

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
вывод исключений разный можно сделать, надо эксперементировать
например, это в xNet

2018-01-30_013821.png

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

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

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