Почему нельзя скрыть ошибки с оператором @ при вызове unset?
Я не знаю. Но вы все равно не должны использовать оператор подавления ошибок (@). Есть два различных сценария:
Developemnt
Вы хотите видеть все ошибки в тот момент, когда они возникают , предпочтительно с необработанным сообщением об ошибке, которое дает вам PHP.
Производство
Вы хотите, чтобы не сообщал пользователю об ошибке PHP . Вместо этого вы хотите записать сообщение об ошибке PHP и отобразить свое собственное сообщение, которое может понять неспециалист.
Вы не можете достичь этого различия, когда используете @. Вы должны разделить эти сценарии, настроив display_errors , error_reporting и установив обработчик ошибок с помощью set_error_handler .