Я заметил, что большинство сообщений об исключениях не содержат подробные сведения о экземпляре, такие как значение, вызвавшее исключение. Обычно они сообщают вам только о "категории" ошибки.
Например, при попытке сериализации объекта с третьим. я получил сообщение MissingMethodException с сообщением:
"Для этого объекта не определен конструктор без параметров".
Во многих случаях этого достаточно, но часто (обычно во время разработки) сообщение типа
"Для этого объекта типа" Foo "не определен конструктор без параметров.
может сэкономить много времени, направляя вас прямо на причину ошибки.
InvalidArgumentException - еще один пример: обычно он указывает имя аргумента, но не его значение. Это похоже на большинство исключений, основанных на фреймворках, но также и на сторонние библиотеки.
Это сделано специально?
Есть ли влияние безопасности при экспонировании внутреннего состояния, такого как "ошибочное" значение переменной?