To be more precise, menu specific "get" and "set" commands (be it "/interface get", "/interface set", "/queue simple get", "/queue simple set", "/ip arp get", "/ip arp set", etc.) throw this error when you give a non existent ID or name as value for the "number(s)" argument.
f.e.
is a valid command call (so it's no syntax error), and is semantically equivalent to
/queue simple get number="test"
If a queue with name "test" existed, then the command will return the queue
*(as an associative array with each property being array key, and the corresponding value being the member's value).
But if there is no queue with the name "test" at the time the command is actually called, the error is thrown.
If an item (be it a queue, an interface, an ARP item... anything, at any menu) is dynamically generated, and is suddenly removed, you could end up in situations where in one second, a "print" at the menu would tell you the item exists, and a second later, it won't.
An example of dynamically generated items are for example queues, which can be generated from various places, such as the "/ip hotspot" menu - you set up queues for each logged in user, and the queue gets created when the user logs in, and gets removed when the user logs out. Any scripts that do something while the user is logged in may end up in a situation where they attempt to do something, but in the middle of it, the user logs out, causing any future get/set calls related to them to fail.
* Wrong. Sorry. The above would error that you need to specify a property to retrieve. You must specify that as a second argument, at which point the command returns the value of the specified property... The point about the error being thrown when the item doesn't exist is still valid, but my description of "get" was utterly wrong.