Должен ли я использовать try-catch при вызове плагина jquery

Итак, у меня есть плагины jquery (или любые другие плагины/функции/библиотеки, если это важно).

Мне было интересно, должен ли я вызывать плагин внутри try-catch, чтобы избежать ошибок неопределенного типа, которые могут заблокировать выполнение остальной части скрипта.

Вот как/где я сейчас вызываю плагины.

(function($){
    $(document).ready(function(){

        // jquery plugin
        try {
            $("#app").plugin();
        } catch (e) {
            console.log(e);
        }

        // some other function applied to entire document
        try {
            libraryFunction();
        } catch (e) {
            console.log(e);
        }
    });
})(jQuery);

Я знаю, что это не обзор кода, но если у вас есть какие-либо предложения по улучшению этого кода, дайте мне знать.

3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
0
36
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Всегда рекомендуется обрабатывать неизвестное поведение с помощью блока try-catch. Но еще важнее знать, как обрабатывать исключение после его обнаружения. В приведенном выше коде исключение регистрируется только (что хорошо) и ничего больше. В этом случае ваше выполнение все еще может быть заблокировано.

Кроме того, было бы хорошо также вернуть исключение обратно вызывающему объекту и заставить его обрабатывать поведение. Например, в приведенном выше коде, если jquery выдал исключение, вы можете сообщить вызывающей стороне об исключении, и вызывающая сторона может решить снова вызвать функцию или сделать что-то еще.

Короче говоря, после отлова обработка решает, как будет восстанавливаться ваше исполнение. Только регистрация не поможет.

Редактировать:

Пример, показывающий, почему исключение должно быть возвращено:

Допустим, у меня есть AppThread, который запрашивает рабочий поток для хранения некоторых данных в базе данных SQL. Такой поток кода в идеале не требует, чтобы рабочий поток что-либо возвращал вызывающему, потому что рабочий поток просто выполняет некоторые операторы Insert. Теперь, во время вставки, рабочий поток поймал SQLException и просто зарегистрировался и вернулся. Теперь поток приложения никогда не был уведомлен об этом исключении и просто предполагает, что данные были вставлены в соответствии с запросом. Через какое-то время AppThread теперь хочет прочитать те же данные из базы данных и просит WorkerThread получить их, используя некоторый идентификатор. На этот раз код не выдаст никаких исключений, и результирующий набор будет просто нулевым. Теперь помните, AppThread был уверен, что данные будут присутствовать, и не будет знать, что делать, если результирующий набор равен нулю. Таким образом, выполнение кода блокируется через какое-то время исключения.

Теперь, если бы рабочий поток уведомил об исключении для потока приложения раньше, AppThread знал бы об этом и предпринял бы повторную попытку операции вставки или показал бы пользователю диалоговое окно, сообщающее ей/ему, что данные, возможно, должны быть проверены перед попытка вставки снова. Кроме того, поскольку исключение было передано обратно, его сообщение давало пользователю больше подсказок о том, что пошло не так. Ему не придется возвращаться к журналам, чтобы проверить, что пошло не так.

Можете ли вы привести сценарий, когда выполнение все еще заблокировано даже с помощью try-catch?

DonJoe 22.05.2019 11:58
Ответ принят как подходящий

Я имел дело со сценариями, когда ошибка плагина на самом деле испортила остальную часть скрипта, и использование try-catch для вызова плагина решило проблему.

Частое использование try-catch может замедлить ваш сценарий, но если вы не имеете дело с длинными циклами, изменение производительности будет незаметным.

Другие вопросы по теме