Я не знаком с нотацией @
в PHP, но я видел такое поведение "не выбрасывать ошибки" в ruby (... rescue nil
) и java (try{...}catch(Exception e){}
).
Если предположить, что это именно то, что вам нужно, то в Lua больше всего похоже на pcall
(см. PiL 8.1 ).
Если «код, который вы хотите обезопасить» находится внутри функции с именем foo
, тогда «безопасной версией» foo(bar, baz)
будет pcall(foo, bar, baz)
.
Если у вас нет функции, но есть куча кода, вам придется использовать pcall + анонимную функцию.
pcall(function() <your code here> end)
Я предупреждаю вас, что в целом, как говорят другие, нет веских причин "выбросить" ошибку.
Если вы делаете это, я рекомендую вам, по крайней мере, четко указать это в своем коде с комментарием или аналогичным:
if not pcall(foo, bar, baz) then
-- Do nothing on error.
end
В противном случае легко пропустить этот pcall
звонок.