Часто (в большинстве случаев) вы можете просто использовать метод checkArgument () без параметра сообщения об ошибке, то есть вообще не предоставлять сообщение об ошибке.
Чтобы сделатьхорошее сообщение об ошибке нужно понять, кто будет читать сообщение.Это не конечный пользователь;если предварительное условие не выполняется, это, скорее всего, указывает на ошибку в коде.Текст может объяснить невыполненное предварительное условие, но в большинстве случаев оно бесполезно для конечного пользователя, предполагается, что оно является подсказкой для программиста.В большинстве случаев само сообщение также не имеет смысла без трассировки стека и исходного кода.Фактически, в большинстве случаев, трассировка стека и исходный код - это именно то, что нужно программисту для исправления ошибки, сообщение об ошибке не помогает.Если предварительное условие не очевидно, комментарий рядом с ним является идеальным способом для его документирования.
Необходимость всегда предоставлять сообщение об ошибке в тех случаях, когда никто не заботится о тексте, приводит к тому, что программисты делают бесполезными, очевиднымии не полезные сообщения, которые только делают код менее читабельным.
В некоторых случаях сообщение об ошибке может быть полезным, например, сообщение может содержать фактические значения переменных, но, как показывает наш опыт, это не так.очень часто, и в этих случаях вы можете использовать сообщение.
Подобные аргументы применимы также в методах assert в JUnit;всегда предоставлять сообщение об ошибке не очень хорошая идея.
Кроме того, когда вы используете предварительные условия в библиотеке, а не в приложении для конечных пользователей, все может быть иначе, так как вы не знаете, как ваш код будетиспользоваться.