Сыпятся ошибки, не могу поймать их

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Благодарностей
23
Баллы
18
Добрый, сыпятся ошибки, не могу понять где они.
Работаю по апи, куча запросов и иногда выскакивают ошибки, поймать не получается, в мейкере вроде все ок, в постере ошибки...
Вот ошибка
Object reference not set to an instance of an object.
at ZennoLab.OwnCode.C938f76b7238c428b8277dd46e9b10611.M938f76b7238c428b8277dd46e9b10611(IZennoPosterProjectModel project, Instance instance)
Пытаюсь поймать вот так
C#:
try{
//код
   }
catch(Exception e){
    project.Lists["error"].Add(e.Message + "\r\n" + e.StackTrace);
    project.SendErrorToLog(e.Message + "\r\n" + e.StackTrace, true);
    throw;
}
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 055
Благодарностей
6 483
Баллы
113
при ошибке записывай все данные из переменных, сразу поймешь в чем трабла
гугли по форуму, много ответов было по этому поводу
 

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Благодарностей
23
Баллы
18
при ошибке записывай все данные из переменных, сразу поймешь в чем трабла
гугли по форуму, много ответов было по этому поводу
у меня переменных штук 200 наверн))) некоторые ошибки ловятся хорошо, со строчкой где есть ошибка, а есть вот такие, так сказать невидимки, которые появляются хз как. Могут через 20 мин появится... ща логирование написал, буду колхозным методом отлавливать...
 

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
550
Баллы
93
Object reference not set to an instance of an object.
Проверяй, что возвращает API, возможно превысил кол-во запросов, или был таймаут. Т.е. получаемый объект может не быть json, проверяй через tryparse.
 
  • Спасибо
Реакции: arbplv

backoff

Client
Регистрация
20.04.2015
Сообщения
6 055
Благодарностей
6 483
Баллы
113
а есть вот такие, так сказать невидимки
нет никаких нивидимок, есть просто ленивые разрабы, которые не хотят думать :-)
1. сохрани какой кубик выходит по ошибке
2. разбери то что должно быть в кубике и что было на самом деле
сохрани не 200 переменных, а одну
и это обычно ответ от пост или гет запроса

раунд!
 
  • Спасибо
Реакции: arbplv

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Благодарностей
23
Баллы
18
нет никаких нивидимок, есть просто ленивые разрабы, которые не хотят думать :-)
1. сохрани какой кубик выходит по ошибке
2. разбери то что должно быть в кубике и что было на самом деле
сохрани не 200 переменных, а одну
и это обычно ответ от пост или гет запроса

раунд!
)) я не против что ищу более простые способы
1. у меня все в одном кубике)))
с момента как раскидал записи (логирование) ща записалось более 10 000 записей, все ок, а вот иногда прям сыпятся ошибки... вот и хотелось бы понять как можно было понять где эта ошибка...
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 055
Благодарностей
6 483
Баллы
113
работая с api при ошибках всегда сначала проверяй квоты на сам ключ, частая проблема
ну а так тебе никто не скажет где ошибка
придется ипаться самому ))
 

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Благодарностей
23
Баллы
18
работая с api при ошибках всегда сначала проверяй квоты на сам ключ, частая проблема
ну а так тебе никто не скажет где ошибка
придется ипаться самому ))
очень интересно, но уже полтора часа ошибок нет... чет видимо было с ответом от сервака... надо как-то придумать еще проверять ответ от апи, пока делаю только так...
76182
 

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Благодарностей
23
Баллы
18
Проверяй, что возвращает API, возможно превысил кол-во запросов, или был таймаут. Т.е. получаемый объект может не быть json, проверяй через tryparse.
Поясни плиз что за метод
C#:
var resRequest = ZennoPoster.HttpPost(url, data, "application/x-www-form-urlencoded", string.Empty, "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody, 10000, string.Empty, string.Empty, true, 10);
    if (!resRequest.Contains("200 OK")){
        System.Threading.Thread.Sleep(1500);
        continue;
    }
    //чистим запрос регуляркой
    data_clean = clean_resRequest_rgx.Match(resRequest).ToString().Trim();
// вот тут надо вставить попытку спарсить пояски как это заюзать)))
if(data_clean.tryparse == true) var json = JObject.Parse(data_clean);
else continue;
C интом понятно, а вот с json не совсем...
int.TryParse - тут есть такое...
 
Последнее редактирование:

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
550
Баллы
93
Поясни плиз что за метод
Он возвращает true/false, можно почитать на msdn.

C#:
public static bool TryParse(string input, out JsonObject result);
Тут писал статью по работе с leaf.xNet, с ней легко можно делать отладку на ответ запроса. Если только работа с api, то можешь быстро написать нужные запросы с нормальной отладкой.

C#:
if (Responce.StatusCode == HttpStatusCode.OK)
{
}
else if (Responce.StatusCode == HttpStatusCode.TooManyRequests)
{
}
else if (Responce.StatusCode == HttpStatusCode.InternalServerError)
{
}
else if (Responce.StatusCode == HttpStatusCode.BadRequest)
{
}
 
  • Спасибо
Реакции: arbplv

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Благодарностей
23
Баллы
18
Он возвращает true/false, можно почитать на msdn.

C#:
public static bool TryParse(string input, out JsonObject result);
Тут писал статью по работе с leaf.xNet, с ней легко можно делать отладку на ответ запроса. Если только работа с api, то можешь быстро написать нужные запросы с нормальной отладкой.

C#:
if (Responce.StatusCode == HttpStatusCode.OK)
{
}
else if (Responce.StatusCode == HttpStatusCode.TooManyRequests)
{
}
else if (Responce.StatusCode == HttpStatusCode.InternalServerError)
{
}
else if (Responce.StatusCode == HttpStatusCode.BadRequest)
{
}
Да, тут проблемка только с апи,
Пожалуй напишу вот так, думаю будет этого достаточно
if (Responce.StatusCode != HttpStatusCode.OK) continue;
У меня в цикле эти запросы делаются, поэтому если кривой запрос, то проще его просто пропустить или забить и сделать еще 1 через пару сек. Спс
 

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Благодарностей
23
Баллы
18
Он возвращает true/false, можно почитать на msdn.

C#:
public static bool TryParse(string input, out JsonObject result);
Тут писал статью по работе с leaf.xNet, с ней легко можно делать отладку на ответ запроса. Если только работа с api, то можешь быстро написать нужные запросы с нормальной отладкой.

C#:
if (Responce.StatusCode == HttpStatusCode.OK)
{
}
else if (Responce.StatusCode == HttpStatusCode.TooManyRequests)
{
}
else if (Responce.StatusCode == HttpStatusCode.InternalServerError)
{
}
else if (Responce.StatusCode == HttpStatusCode.BadRequest)
{
}
Сначала обрадовался, но потом попробовал и не нашел такого метода у моего ответа, поясни куда этот метод приткнуть?))
C#:
var resRequest = ZennoPoster.HttpPost(url, data, "application/x-www-form-urlencoded", string.Empty, "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody, 10000, string.Empty, string.Empty, true, 10);
    if (!resRequest.Contains("200 OK")){
        System.Threading.Thread.Sleep(1500);
        continue;
    }
    if (resRequest.StatusCode != HttpStatusCode.OK){
        System.Threading.Thread.Sleep(1500);
        continue;
    }
 

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Благодарностей
23
Баллы
18
Старый метод юзал, заменил, будем смотреть на результат
76187
 

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
550
Баллы
93

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