I'm saying if errors are never reported, you may never find out that they exist, and they won't be fixed because nobody will know they exist. Lua widgets aren't the only code that issues commands. Also, a malicious person could do a lot of things aside from spamming invalid commands from a Lua widget, what if they spammed valid commands that didn't do much? Telling a stopped unit to stop? Fill up the network buffer and slow down the game?
Simply swallowing the error and pretending everything is okay is downright irresponsible.
I am not even convinced that invalid commands are always a problem. But I don't need this line of argument.
A malicious person could intentionally spam errors with a widget......
The actual problem here is not reporting errors as a responsible stable testable API should, it's:
- Users don't have a means to update their widgets effectively
- There's no mechanism for a lot of widgets to report bugs etc, most widgets don't have bug trackers or issues, and they don't have version control
- Misbehaving widgets that cause errors are being allowed to run amok.
My suggestion would be to disable a widget should it run into such an issue, it's clearly not working as it should, and who knows what undefined behaviour could be included. THIS will get widgets fixed.
Making the engine shut up when it's given garbage parameters is simply sweeping bugs under the carpet.
If you give a waitress a pile of lego to pay for a bill at a restaurant, should the waitress shut up instead of demanding cash because it would ruin your experience of dining out? I can't even understand why the waitress couldn't accept lego instead of $$, has a restuarant ever been closed because of Lego coinage? But that's not a line of discussion I need.
Malicious diners could continuously hand out small segments of lego blocks to said restaurant in an attack that would utterly ruin dining for all customers in the restaurant.
In terms of all users vs only yourself receiving the error, perhaps the command should never have been sent if it originated in unsynced code.
Otherwise I think the arguments for silencing the engine amount to:
We're getting error messages in our game, shut it up