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

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;
}
 
при ошибке записывай все данные из переменных, сразу поймешь в чем трабла
гугли по форуму, много ответов было по этому поводу
 
при ошибке записывай все данные из переменных, сразу поймешь в чем трабла
гугли по форуму, много ответов было по этому поводу
у меня переменных штук 200 наверн))) некоторые ошибки ловятся хорошо, со строчкой где есть ошибка, а есть вот такие, так сказать невидимки, которые появляются хз как. Могут через 20 мин появится... ща логирование написал, буду колхозным методом отлавливать...
 
Object reference not set to an instance of an object.
Проверяй, что возвращает API, возможно превысил кол-во запросов, или был таймаут. Т.е. получаемый объект может не быть json, проверяй через tryparse.
 
  • Спасибо
Реакции: arbplv
а есть вот такие, так сказать невидимки
нет никаких нивидимок, есть просто ленивые разрабы, которые не хотят думать :)
1. сохрани какой кубик выходит по ошибке
2. разбери то что должно быть в кубике и что было на самом деле
сохрани не 200 переменных, а одну
и это обычно ответ от пост или гет запроса

раунд!
 
  • Спасибо
Реакции: arbplv
нет никаких нивидимок, есть просто ленивые разрабы, которые не хотят думать :-)
1. сохрани какой кубик выходит по ошибке
2. разбери то что должно быть в кубике и что было на самом деле
сохрани не 200 переменных, а одну
и это обычно ответ от пост или гет запроса

раунд!
)) я не против что ищу более простые способы
1. у меня все в одном кубике)))
с момента как раскидал записи (логирование) ща записалось более 10 000 записей, все ок, а вот иногда прям сыпятся ошибки... вот и хотелось бы понять как можно было понять где эта ошибка...
 
работая с api при ошибках всегда сначала проверяй квоты на сам ключ, частая проблема
ну а так тебе никто не скажет где ошибка
придется ипаться самому ))
 
работая с api при ошибках всегда сначала проверяй квоты на сам ключ, частая проблема
ну а так тебе никто не скажет где ошибка
придется ипаться самому ))
очень интересно, но уже полтора часа ошибок нет... чет видимо было с ответом от сервака... надо как-то придумать еще проверять ответ от апи, пока делаю только так...
76182
 
Проверяй, что возвращает 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 - тут есть такое...
 
Последнее редактирование:
Поясни плиз что за метод

Он возвращает 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
Он возвращает 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 через пару сек. Спс
 
Он возвращает 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;
    }
 
Старый метод юзал, заменил, будем смотреть на результат
76187
 

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