![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
They are funny 'cause they are true!
Один Clever Guy закодив витягування локалізованих повідомлень про помилки АПІ по іменах ключів в локалізації, виду
Через кілька тижнів після того, як Clever Guy пішов з компанії, була додана нова АПІ помилка з ключем локалізації виду
А все через те, що клас
Один Clever Guy закодив витягування локалізованих повідомлень про помилки АПІ по іменах ключів в локалізації, виду
error_0x_1234_ErrorNameHere
(код у шістнадцятковій системі). Для цього діла він написав регекс error_0x([\d\w]+)_
- регекс мав витягати код помилки як першу знайдену групу, далі воно конвертилося в інт, і виступало як ключ у мапі, в яку складалися локалізовані повідомлення помилок. Потім, коли треба було діставати локалізоване повідомлення, воно вже діставалося з цієї мапи по коду помилки.Через кілька тижнів після того, як Clever Guy пішов з компанії, була додана нова АПІ помилка з ключем локалізації виду
error_0x1234_Error_name_here
. Апп почав падати на всіх АПІ помилках. Невірний пароль? креш. Токен застарів? креш. І так далі, і так далі.А все через те, що клас
\w
- це цифри, букви та підкреслення. Його регекс видавав 1234_Error_name
замість 1234
. При складанні мапи локалізованих повідомлень спроба сконвертити 1234_Error_name
в інт закономірно видавала ексепшен.