215 похожих чатов

Всем добрый вечер. Подскажите как обрабатывать ошибки в lua коде?

Например команда box.space.tuple:upsert{...} не выполнится (ну там не верный тип данных передал, тарантул не отвечает,....) как обработать исключение в процедуре?

22 ответов

20 просмотров

Предпочтительнее использовать модуль tarantool/errors

mr. Ruslan Valitov- Автор вопроса

Спасибо

mr. Ruslan Valitov- Автор вопроса

Немного не ясно, получается что для выполнения box.space.tuple:upsert(...) мне upsert нужно обернуть функцией ??

У объекта ошибки есть метод pcall

mr. Ruslan Valitov- Автор вопроса

Ну я именно про tarantool/errors

Да, этот модуль позволяет создавать классы и объекты ошибок

Я бы не был столь категоричен Предпочтительнее всё-таки pcall/xpcall А навороты в стиле golang без статического анализа от golang скорее порождают больше ошибок

Именнованые ошибки делают код более структурированным, а пользование просто pcall без стат анализа тоже не спасает от ошибок.

Никто не мешает выбрасывать "именованные ошибки" или даже целые объекты при помощи стандартного error()

Аккуратно с upsert, в виниле он не все ошибки кидает

mr. Ruslan Valitov- Автор вопроса

Пока все данные в memtx-e. Но спасибо за предупреждение.

Если у вас мемтикс, то лучше вообще без upsert

mr. Ruslan Valitov- Автор вопроса

Хорошо, тогда получается нужно в транзакции это делать? Начало транзакции, читаю, если пусто то добавляю, если нет то изменяю, завершаю транзакцию?

Лучше так, это более явно, хотя операции чтения в мемткс не йилдят

mr. Ruslan Valitov- Автор вопроса

Тогда смысла в транзакции нет?

Есть, как минимум для того чтобы посмотреть на этот код через неделю и понять что там имелось ввиду

mr. Ruslan Valitov- Автор вопроса

Спасибо, учту

Опять же, в виниле это не так работает, поэтому нужно явно писать то что ожидается

Апсерт делался исключительно для винила Если у вас будут вторичные уникальные индексы, выйдет неудачно

Ну "исключительно" это громко, как минимум потому что появился на несколько лет раньше винила )

проблем от него больше, чем профита

Ну на борту "такого" в достатке)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта