From adf66ad2a2c358ec8d3edfc92f96ba0376888e74 Mon Sep 17 00:00:00 2001 From: Sergey Chebotar Date: Tue, 7 Dec 2021 08:48:35 +0300 Subject: [PATCH] Add try...catch to GetProduct --- Source/Assistant/SkuAssist.cs | 46 +++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/Source/Assistant/SkuAssist.cs b/Source/Assistant/SkuAssist.cs index a524daa..6d72a72 100644 --- a/Source/Assistant/SkuAssist.cs +++ b/Source/Assistant/SkuAssist.cs @@ -7,6 +7,7 @@ using System.Linq; using System.Runtime.Caching; using System.Text.RegularExpressions; using System.Threading.Tasks; +using System.Windows.Forms; namespace Rehau.Sku.Assist { @@ -30,27 +31,36 @@ namespace Rehau.Sku.Assist } public static IProduct GetProduct(IDocument document) { - string script = document - .Scripts - .Where(s => s.InnerHtml.Contains("dataLayer")) - .First() - .InnerHtml; + try + { + string script = document + .Scripts + .Where(s => s.InnerHtml.Contains("dataLayer")) + .FirstOrDefault() + .InnerHtml; - string json = script - .Substring(script.IndexOf("push(") + 5) - .TrimEnd(new[] { ')', ';', '\n', ' ' }); + string json = script + .Substring(script.IndexOf("push(") + 5) + .TrimEnd(new[] { ')', ';', '\n', ' ' }); - if (!json.Contains("impressions")) + if (!json.Contains("impressions")) + return null; + + StoreResponce storeResponse = JsonConvert.DeserializeObject(json); + IProduct product = storeResponse + .Ecommerce + .Impressions + .Where(p => p.Id.IsRehauSku()) + .FirstOrDefault(); + + return product; + } + + catch (NullReferenceException e) + { + MessageBox.Show(e.Message, "Ошибка получения данных", MessageBoxButtons.OK, MessageBoxIcon.Error); return null; - - StoreResponce storeResponse = JsonConvert.DeserializeObject(json); - IProduct product = storeResponse - .Ecommerce - .Impressions - .Where(p => p.Id.IsRehauSku()) - .FirstOrDefault(); - - return product; + } } public static object GetProduct(string request, ProductField field) {