Microsoft net framework ошибка invalid argument значение
Я получаю следующую ошибку, когда отправляю обратно страницу со стороны клиента. У меня есть код JavaScript, который изменяет asp: ListBox на стороне клиента.
Как мы это исправим?
Подробности ошибки ниже:
Надеюсь, это поможет.
У вас есть коды в ваших событиях Page_Load? если да, то, возможно, добавление следующего поможет.
Эта ошибка выдается, когда вы нажимаете на вашу команду и снова запускается Page_load, в обычном жизненном цикле будет Page_Load -> Нажмите Command -> Page_Load (снова) -> Process ItemCommand Event
ага! Спасибо большое, это был трюк в моем случае! Я перезагрузил выпадающий список в загрузке страницы, и поэтому фреймворк потерял контроль над элементами (новыми) в ddl, и тем, который я щелкнул (которого больше не было)
У меня была та же ошибка, что и у OP . Я использовал мастер в своей форме и вызывал шаг 0 при загрузке страницы. убрал это и проблема исчезла. Спасибо .
Большое спасибо за этот ответ . Была такая же проблема, и оказалось, что я просто забыл игнорировать постбэки при загрузке данных в мою сетку . сэкономить мне много времени
Я сделал это, но у меня это не сработало, потому что есть код, который мне нужно запустить в событии page_load, когда это не постбэк, и поэтому я все еще получаю ту же ошибку. Отключение режима просмотра моего ретранслятора решило проблему.
"Недопустимый аргумент обратной передачи или обратного вызова. Проверка события включена с использованием в конфигурации или на странице. В целях безопасности эта функция проверяет, что аргументы для событий обратной передачи или обратного вызова исходят от серверного элемента управления, который первоначально предоставил их. Если данные действительны и ожидаемы, используйте метод ClientScriptManager.RegisterForEventValidation, чтобы зарегистрировать данные обратной передачи или обратного вызова для проверки. "
Я изменил несколько кодов, и, наконец, мне это удалось. Мой опыт маршрута:
1) Я изменил атрибут страницы на EnableEventValidation="false" . Но это не сработало. (не только это опасно по соображениям безопасности, мой обработчик событий не вызывался: void Grid_SelectedIndexChanged(object sender, EventArgs e)
2) Я реализовал ClientScript.RegisterForEventValidation метод Render. Но это не сработало.
3) Я изменил тип кнопки в столбце сетки с PushButton на LinkButton . Это сработало! ("ButtonType =" LinkButton "). Думаю, если вы сможете изменить свою кнопку на другие элементы управления, такие как" LinkButton ", в других случаях она будет работать правильно.
Ваше решение работает для меня тоже. Спасибо. Но я хочу знать, почему Button не работает, когда linkButton работает по той же программе. Если это так, мы должны всегда использовать linkButton ? Как мы могли бы сделать более гибким?
Awesomeeeeeee :) .. Вы можете научиться этому только на собственном опыте .. Вы доказали, что настоящий SSCNERIO TAT показывает Опыт лучший учитель .. Отличный ответ и объяснение!
В переопределении для Render ВЫ ДОЛЖНЫ ПОСТАВИТЬ base.Render (писатель); в конце концов . иначе не получится!
Вы действительно хотите сделать 2 или 3, не отключайте проверку события.
Есть две основные проблемы с добавлением элементов на стороне клиента asp: listbox.
Во-первых, это мешает проверке событий. То, что вернулось на сервер, не то, что оно отправило.
Наилучший вариант, скорее всего, использовать панель обновления, как было рекомендовано. Другой вариант, если вам действительно нужно сделать это на стороне клиента, это использовать простой старый вместо a и сохранить список элементов в скрытом поле. Когда страница отображается на клиенте, вы можете заполнить ее, разделив содержимое текстового поля.
Затем, когда вы будете готовы опубликовать его, вы заполняете содержимое скрытого поля из вашего измененного . Затем, конечно, вы должны снова разделить это на сервере и что-то сделать со своими элементами, так как ваш выбор пуст, теперь, когда он вернулся на сервер.
В общем, это довольно громоздкое решение, которое я бы не рекомендовал, но если вам действительно нужно вносить изменения в listBox на стороне клиента, оно работает. Однако, я бы порекомендовал вам заглянуть в панель обновления, прежде чем идти по этому пути.
c, вам не нужно хранить выбранные элементы в скрытом поле, если вы сделаете поле выбора runat = "server", вы можете прочитать переданное обратно значение из Request.Form [ selectid .UnqiueID]. И если выбрано несколько, браузер публикует значения в формате CSV. Обратите внимание, что элементы и свойства selectedindex элемента управления будут неправильными на сервере, поскольку вы изменили список itrmlist на клиенте, о котором сервер не знает.
Майкл, это сработало. до тех пор, пока вы добавляете «несколько = истина», иначе это даст вам только 1 значение. Спасибо
Была такая же проблема для выпадающего списка с символами новой строки. Переключение на выбор работал отлично. Спасибо!
Я использовал старый добрый
У меня была такая же проблема с Repeater, потому что у меня была веб-страница с элементом управления Repeater на веб-сайте, на котором была включена функция EnableEventValidation. Это было не хорошо. Я получаю недопустимые исключения, связанные с обратной передачей.
То, что работало для меня, было установить EnableViewState = "false" для повторителя. Преимущества заключаются в том, что его проще использовать, так же как и отключение проверки события для веб-сайта или веб-страницы, но область действия намного меньше, чем отключение проверки события для обоих.
У меня была именно эта проблема с устаревшим веб-контролем. Наша веб-платформа / CMS (sitecore) получила большое обновление, которое включило проверку событий (ранее она была отключена! Ой!). Элемент управления повторителя отображал изображения в веб-галерее (с кнопками для их изменения), и при обратной передаче этих кнопок происходило исключение. Я отключил состояние просмотра на повторителях, используя EnableViewState = "false", как вы предложили, и эй до того, как это сработало. Как обнаружили другие, переопределение Render () и использование ClientScriptManager.RegisterForEventValidation () у меня не сработало. СПАСИБО!
Это сработало и для меня. Панель обновления AJAX работала бы также хорошо, но она была раздутой, что мне не нужно в этом случае, так что спасибо Умар Фарук Хаваджа.
Ничто из вышеперечисленного не помогло мне. После дальнейших раскопок я понял, что пропустил 2 формы, примененные на странице, которая вызывала проблему.
У меня была такая же проблема при изменении ListBox с помощью JavaScript на клиенте. Это происходит, когда вы добавляете новые элементы в ListBox от клиента, которых не было при визуализации страницы.
Исправление, которое я нашел, состоит в том, чтобы информировать систему проверки событий обо всех возможных допустимых элементах, которые можно добавить с клиента. Вы делаете это путем переопределения Page.Render и вызова Page.ClientScript.RegisterForEventValidation для каждого значения, которое ваш JavaScript может добавить в список:
Это может быть болезненно, если у вас есть большое количество потенциально допустимых значений для списка. В моем случае я перемещал элементы между двумя списками ListBox - один, который имеет все возможные значения, и другой, который изначально пуст, но заполняется подмножеством значений из первого в JavaScript, когда пользователь нажимает кнопку. В этом случае вам просто нужно перебрать элементы в первом ListBox и зарегистрировать каждый из них во втором списке:
Еще один способ, не упомянутый здесь, это создать подкласс ListBox
ClientEventValidation отключает атрибут System.Web.UI.SupportsEventValidation, если вы создаете его подкласс, если вы не добавите его явно, он никогда не вызовет процедуру проверки. Это работает с любым элементом управления, и я нашел единственный способ «отключить» его для элемента управления на основе элемента управления (т. Е. Не на уровне страницы).
К сожалению, кажется, что если вы сделаете это, любые элементы списка, добавленные на клиенте, не будут распознаны, если они будут выбраны при повторной публикации страницы.
вы пытаетесь что-то подобное на своей странице .aspx
Вы можете задать любой вопрос!
Я бы поспорил, если бы в этом случае наиболее подходящим решением было бы отключить встроенное предложение проверки с помощью инфраструктуры, чтобы перестать видеть ошибку.
И чтобы получить данные, выбранные из DDL, вы можете прикрепить событие «OnChange» к DDL, чтобы собрать значение в скрытом вводе или в текстовом поле со стилем = «display: none;»
3: я изменил свой тип кнопки в столбце сетки с «PushButton» на «LinkButton». Это сработало! ("ButtonType =" LinkButton ") Я думаю, если вы можете изменить свою кнопку на другие элементы управления, такие как" LinkButton "в других случаях, она будет работать правильно.
Хотел бы я проголосовать за тебя, Амир (увы, мой представитель слишком низкий.) У меня просто была эта проблема, и изменение ее работало как чемпион в моем сетке. Немного в стороне, я думаю, правильный код: ButtonType = "Link"
Суть этой проблемы заключается в модели проверки событий asp.net и в том, что клиент изменяет «страницу» в тот момент, когда вы делаете пост обратно. Что ты имеешь в виду ". И эти переменные элементы управления делают .net непростым" ??
(1) EnableEventValidation = "false" . Это не работает для меня.
(2) ClientScript.RegisterForEventValidation . Это не работает для меня.
Решение 1:
Измените Button / ImageButton на LinkButton в GridView. Оно работает. (Но мне нравится ImageButton)
Исследование: Button / ImageButton и LinkButton используют разные методы для обратной передачи
Оригинальная статья:
Решение 2:
В OnInit () введите код примерно так, чтобы установить уникальный идентификатор для Button / ImageButton:
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Исключение, которое возникает при использовании недопустимого значения перечисления.
Примеры
Комментарии
Это исключение возникает при передаче недопустимого значения перечисления методу или при задании свойства.
Конструкторы
Инициализирует новый экземпляр класса InvalidEnumArgumentException, используя указанные данные сериализации и контекст.
Инициализирует новый экземпляр класса InvalidEnumArgumentException с указанным подробным описанием и указанным исключением.
Свойства
Возвращает коллекцию пар «ключ-значение», предоставляющую дополнительные сведения об исключении.
Получает или задает ссылку на файл справки, связанный с этим исключением.
Возвращает или задает HRESULT — кодированное числовое значение, присвоенное определенному исключению.
Возвращает экземпляр класса Exception, который вызвал текущее исключение.
Возвращает имя параметра, ставшего причиной этого исключения.
Возвращает или задает имя приложения или объекта, вызывавшего ошибку.
Получает строковое представление непосредственных кадров в стеке вызова.
Возвращает метод, создавший текущее исключение.
Методы
Определяет, равен ли указанный объект текущему объекту.
При переопределении в производном классе возвращает исключение Exception, которое является первопричиной одного или нескольких последующих исключений.
Служит хэш-функцией по умолчанию.
Задает объекту SerializationInfo имя параметра и дополнительную информацию об исключении.
Возвращает тип среды выполнения текущего экземпляра.
Создает неполную копию текущего объекта Object.
Создает и возвращает строковое представление текущего исключения.
События
Возникает, когда исключение сериализовано для создания объекта состояния исключения, содержащего сериализованные данные об исключении.
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Исключение, которое выдается, если значение аргумента не соответствует допустимому диапазону значений, установленному вызванным методом.
Примеры
В следующем примере определяется класс, содержащий сведения о приглашенном госте. Если гость моложе 21, ArgumentOutOfRangeException возникает исключение.
Комментарии
Исключение ArgumentOutOfRangeException возникает, когда вызывается метод, и хотя бы один из аргументов, переданных в метод, не null является и содержит недопустимое значение, которое не является членом набора значений, ожидаемых для аргумента. Свойство ParamName определяет недопустимый аргумент, а ActualValue свойство, если значение присутствует, идентифицирует недопустимое значение.
Как правило, ArgumentOutOfRangeException результаты ошибки разработчика. Вместо обработки исключения в try / catch блоке следует исключить причину исключения или, если аргумент возвращается вызовом метода или вводом пользователем перед передачей в метод, который вызывает исключение, необходимо проверить аргументы перед их передачей в метод.
ArgumentOutOfRangeException широко используется в следующих целях:
Классы в System.Collections пространствах имен и System.IO пространствах имен.
Методы обработки строк в String классе.
Ниже перечислены условия, при которых ArgumentOutOfRangeException возникает исключение.
Вы извлеките элемент коллекции по его номеру индекса, а номер индекса является недопустимым.
Это наиболее распространенная причина ArgumentOutOfRangeException исключения. Как правило, номер индекса недопустим по одной из четырех причин:
Коллекция не имеет элементов, и код предполагает, что он делает. В следующем примере предпринимается попытка получить первый элемент коллекции без элементов:
Чтобы предотвратить исключение, проверьте, больше ли свойство коллекции Count , прежде чем пытаться получить какие-либо элементы, как показано в следующем фрагменте кода.
В некоторых случаях исключение может возникать, так как вы пытаетесь добавить элемент в коллекцию с помощью индекса, который не существует, а не путем вызова метода, например Add , который существует для этой цели. В следующем примере предпринимается попытка добавить элемент в коллекцию с помощью несуществующего индекса, а не вызова List.Add метода.
Следующий фрагмент кода исправляет эту ошибку:
Вы пытаетесь получить элемент, индекс которого является отрицательным. Обычно это происходит потому, что вы искали коллекцию для индекса определенного элемента и ошибочно предположили, что поиск выполнен успешно. В следующем примере вызов List.FindIndex(Predicate) метода не может найти строку, равную "Z", и поэтому возвращает значение -1. Однако это недопустимое значение индекса.
Чтобы предотвратить исключение, убедитесь, что поиск выполнен успешно, убедившись, что возвращенный индекс больше нуля или равен нулю, прежде чем пытаться извлечь элемент из коллекции, как показано в следующем фрагменте кода.
Вы пытаетесь получить элемент, индекс которого равен значению свойства коллекции Count , как показано в следующем примере.
Вы пытаетесь выполнить строковую операцию, вызвав метод обработки строк, и начальный индекс не существует в строке.
Существует четыре распространенных причины этого ArgumentOutOfRangeException исключения:
Вы работаете с пустой строкой или String.Empty. Так как его String.Length свойство возвращает значение 0, любая попытка манипулировать ею по индексу ArgumentOutOfRangeException создает исключение. В следующем примере определяется GetFirstCharacter метод, возвращающий первый символ строки. Если строка пуста, так как окончательная строка, передаваемая методу, ArgumentOutOfRangeException вызывает исключение.
Исключение можно исключить, проверив, больше ли значение строки String.Length или вызов метода, чтобы убедиться, что строка не null является или пустаIsNullOrEmpty. Следующий фрагмент кода выполняет последнее. В этом случае, если строка является null или пуста GetFirstCharacter , метод возвращает U+0000.
Вы управляете строкой на основе позиции подстроки в этой строке, и вы не смогли определить, была ли на самом деле найдена подстрока.
В следующем примере извлекается второе слово из двух слов. Он создает исключение, ArgumentOutOfRangeException если фраза состоит только из одного слова и поэтому не содержит внедренный пробел. Это происходит потому, что вызов String.IndexOf(String) метода возвращает -1, чтобы указать, что поиск завершился ошибкой, и это недопустимое значение затем передается методу String.Substring(Int32) .
Чтобы исключить исключение, проверьте значение, возвращаемое методом поиска строк перед вызовом метода обработки строк.
Вы попытались извлечь подстроку, которая находится за пределами диапазона текущей строки.
Методы, извлекающие подстроки, требуют, чтобы указать начальную позицию подстроки и для подстроок, которые не продолжаются до конца строки, количество символов в подстроке. Обратите внимание, что это не индекс последнего символа в подстроке.
В ArgumentOutOfRangeException этом случае обычно возникает исключение, так как вы неправильно вычислили количество символов в подстроке. Если вы используете метод поиска, как String.IndexOf определить начальные и конечные позиции подстроки:
Если символ в конечной позиции, возвращенной String.IndexOf в подстроке, должен быть включен в подстроку, конечная позиция подстроки присваивается формулой.
Если символ в конечной позиции, возвращаемой String.IndexOf из подстроки, должен быть исключен из подстроки, конечная позиция подстроки присваивается формулой.
В следующем примере определяется FindWords метод, который использует String.IndexOfAny(Char[], Int32) метод для идентификации символов пробелов и знаков препинания в строке и возвращает массив, содержащий слова, найденные в строке.
Вы передали отрицательное число методу с аргументом, требующим только положительных чисел и нуля, или вы передали отрицательное число или ноль методу с аргументом, требующим только положительных чисел.
Например, для Array.CreateInstance(Type, Int32, Int32, Int32) метода требуется указать количество элементов в каждом измерении двумерного массива; допустимые значения для каждого измерения могут варьироваться от 0 до Int32.MaxValue. Но поскольку аргумент измерения в следующем примере имеет отрицательное значение, метод создает ArgumentOutOfRangeException исключение.
Условие гонки существует в приложении с многопоточной или имеет задачи, которые выполняются асинхронно и обновляют массив или коллекцию.
В этом случае доступ к двум ресурсам выполняется из нескольких потоков:
Коллекция continents . Его List.Add метод вызывается из нескольких потоков. Кроме того, основной или основной поток предполагает, что коллекция полностью заполнена семью элементами при итерации его элементов.
Строка msg , сцепленная из нескольких потоков.
Чтобы устранить ошибку, убедитесь, что доступ к общему состоянию осуществляется потокобезопасно, как показано ниже.
Если приложение использует массив или объект коллекции, рассмотрите возможность использования класса коллекции, безопасного для потоков, например типов в System.Collections.Concurrent пространстве имен или System.Collections.Immutable выпуске вне диапазона.
В следующем примере рассматриваются ArgumentOutOfRangeException и другие проблемы из предыдущего примера. Он заменяет List объект ConcurrentBag объектом, чтобы обеспечить потокобезопасный доступ к коллекции, использует CountdownEvent объект, чтобы гарантировать, что поток приложения продолжается только после выполнения других потоков и использует блокировку, чтобы гарантировать, что только один поток может получить доступ к переменной msg за раз.
ArgumentOutOfRangeException использует COR_E_ARGUMENTOUTOFRANGE HRESULT, имеющий значение 0x80131502.
Список начальных значений свойств для экземпляра ArgumentOutOfRangeException, см. в разделе ArgumentOutOfRangeException конструкторы.
Конструкторы
Инициализирует новый экземпляр класса ArgumentOutOfRangeException.
Инициализирует новый экземпляр класса ArgumentOutOfRangeException с сериализованными данными.
Инициализирует новый экземпляр класса ArgumentOutOfRangeException именем параметра, вызвавшего исключение.
Свойства
Возвращает значение аргумента, вызвавшего это исключение.
Возвращает коллекцию пар «ключ-значение», предоставляющую дополнительные сведения об исключении.
Получает или задает ссылку на файл справки, связанный с этим исключением.
Возвращает или задает HRESULT — кодированное числовое значение, присвоенное определенному исключению.
Возвращает экземпляр класса Exception, который вызвал текущее исключение.
Возвращает имя параметра, ставшего причиной этого исключения.
Возвращает или задает имя приложения или объекта, вызывавшего ошибку.
Получает строковое представление непосредственных кадров в стеке вызова.
Возвращает метод, создавший текущее исключение.
Методы
Определяет, равен ли указанный объект текущему объекту.
При переопределении в производном классе возвращает исключение Exception, которое является первопричиной одного или нескольких последующих исключений.
Служит хэш-функцией по умолчанию.
Задает в объекте SerializationInfo недопустимое значение аргумента и дополнительные сведения об исключении.
Задает объекту SerializationInfo имя параметра и дополнительную информацию об исключении.
Возвращает тип среды выполнения текущего экземпляра.
Создает неполную копию текущего объекта Object.
Создает и возвращает строковое представление текущего исключения.
События
Возникает, когда исключение сериализовано для создания объекта состояния исключения, содержащего сериализованные данные об исключении.
Требования для установки нового приложения
Установив, к примеру, новую игру вы можете увидеть окно с предупреждением об ошибке. Первое, что необходимо сделать в этом случае, проверить условия для установки игры. Довольно часто, для своей работы программы используют дополнительные компоненты. Это может быть и DirectX, библиотека C++ и многое другое.
Проверьте, присутствуют ли они у вас. Если нет, установите, скачав дистрибутивы с официального сайта. Может быть такое, что версии компонентов устарели и их необходимо обновить. Так же заходим на сайт производителя и качаем новые.
Или же можем это сделать с помощью специальных инструментов, которые обновляют программы в автоматическом режиме. Например, есть небольшая утилита SUMo, которая поможет легко решить данную задачу.
Переустановка программы выдающей ошибку
Тоже самое нужно сделать с программой, которая привела к ошибке. Обязательно скачивайте ее с официального сайта. Удаление по тому же принципу, через CCleaner.
Использование русских символов
Многие игры и программы, не принимают русские символы. Если в вашей системе есть папки с русским названием, то их необходимо изменить на английские. Самый лучший вариант, посмотреть в настройках программы, куда забрасывается информация из игры. Причем важна не только конечная папка, но и весь путь.
Можно воспользоваться другим способом. В тех же настройках игры, меняем место хранения файлов. Создаем новую папку на английском языке или выбираем уже имеющуюся. Как и в первом случае, просматриваем путь. Для верности перегружаем компьютер и заново запускаем приложение.
Драйвера
Посмотреть состояние драйверов, можно в диспетчере задач. В свойствах оборудования, переходим во вкладку «Драйвер» и нажимаем обновить. Для выполнения данной задачи, на компьютере должно быть активное подключение к интернету.
Чтобы не заниматься этим вручную, можно использовать программы для автоматического обновления драйверов. Мне нравиться программа Driver Genius. Вам необходимо просканировать компьютер на наличие устаревших драйверов и обновить необходимые.
После чего компьютер должен быть перегружен.
Системные требования
Очень часто, пользователи устанавливают программы, не вникая в их минимальные системные требования. В этом случае, тоже, может возникнуть ошибка необрабатываемого приложения и многих других.
Посмотрите требования к установке для вашей программы и сравните со своими. Посмотреть это можно в свойствах «Мой компьютер».
Если причина именно в этом, можно попробовать, установить более раннюю версию программы, они обычно менее требовательны к системе.
Приоритет
Чтобы решить проблему, необходимо зайти в «Диспетчер задач» и во вкладке процессы, найти тот, что соответствует вашей игре. Нажав на нем правой кнопкой мыши, появиться дополнительный список. В нем необходимо найти «Приоритет» и выставить там значение «Высокий». Таким образом производительность процесса увеличиться и ошибка может исчезнуть. Единственный недостаток метода, в том, что производительность других программ несколько снизиться.
Мы рады, что смогли помочь Вам в решении проблемы.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
Exceptions can be thrown either by the runtime or the application code. This can be caused by bad code, while, other times, the problem is caused by bad user input that has not been accounted for in the application's code. When any of these errors occur, the system catches the error and raises an exception.
Note: Interested in learning about the ArgumentNullException and ArgumentOutOfRangeException ? Check out my post on those exceptions here.
Working with InvalidOperationException Exception
The InvalidOperationException exception type is thrown when a method call is invalid for the object's current state. This can be caused by changing a collection while iterating it, or casting a Nullable that is null to its underlying type. We can also throw this exception type in cases where we want to signal to our application that the requested operation through a method call can't be performed because the object is in an invalid state. Let's look at an example:
The code above shows an Account class with properties to hold the account owner's names and account balance. The Withdraw method deducts the withdrawal amount from the balance, and if the withdrawal amount is higher than the balance, it throws an exception — the InvalidOperationException . When the exception is raised, it cancels the withdraw transaction and signals to the application that the account can't be debited of that amount because of insufficient funds.
Working with ArgumentException Exception
The ArgumentException type inherits from the System.SystemException class and should be thrown when a method argument receives an invalid argument value. Carrying on from the Account class example from the previous section, let's guard the Withdraw method not to allow a number less than one, or an empty string as values for the names.
In the code above, we used the ArgumentException exception in the constructor to prevent initializing an account object with invalid values. We also throw the ArgumentException exception if the Withdraw method is called with an amount less than one. We used the constructor that accepts an exception message and a second parameter to indicate the parameter that caused the exception.
That's A Wrap
The ArgumentException is thrown when a method argument receives an invalid argument value. The InvalidOperationException exception is thrown in cases where the failure to invoke a method is caused by reasons other than invalid arguments. Because the InvalidOperationException exception can be thrown in a wide variety of circumstances, it is important to read the exception message returned by the Message property. How you handle the exception depends on the specific situation. Most commonly, however, the exception results from developer error and it can be anticipated and avoided.
Peter Mbanugo
Peter Mbanugo is a software developer, tech writer, and maker of Hamoni Sync. When he's not building tech products, he spends his time learning and sharing his knowledge on topics related to GraphQL, Offline-First and recently WebAssembly. He's also a contributor to Hoodie and a member of the Offline-First community. You can follow him on Twitter.
Читайте также: