πŸš€ РассказываСм ΠΏΡ€ΠΎ Π½ΠΎΠ²Ρ‹Π΅ диагностики

Π‘++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, Ρƒ нас ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ новости β€” Π² Ρ€Π΅Π»ΠΈΠ·Π΅ 7.34 появилась Π½ΠΎΠ²ΠΎΠ΅ диагностичСскоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ V1116.

Оно ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ для обнаруТСния ситуаций, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π±Π΅Π· ΠΏΠΎΡΡΠ½ΡΡŽΡ‰ΠΈΡ… сообщСний. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€: `void DoSomething(const char *val) { if (!val) throw std::runtime_error { "" }; }

void Function() { const char *val = ....; try { DoSomething(val); } catch (std::runtime_error &err) { std::cerr << err.what() << std::endl; } }

Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DoSomething Π² случаС возникновСния ошибки бросаСтся ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ с пустым сообщСниСм, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠΏΠ°Π΄Ρ‘Ρ‚ Π² std::cerr. Написав Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ словно оставил ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ посланиС: "Бчастливой ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ". Π­Ρ‚ΠΎ услоТнит для Π½ΠΈΡ… ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹Π·Π²Π°Π»ΠΎ сбой.

Π‘ΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: `if (!val) { throw std::runtime_error { "[DoSomething]: " "the 'val' pointer was nullptr." }; } Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ сообщСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ.

Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для стандартного ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Для Π²Ρ‹Π΄Π°Ρ‡ΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ.

#cpp #PVS_Studio``

πŸš€ РассказываСм ΠΏΡ€ΠΎ Π½ΠΎΠ²Ρ‹Π΅ диагностики
Π‘ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, Ρƒ нас ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ новости β€” Π² Ρ€Π΅Π»ΠΈΠ·Π΅ 7.34 появилась Π½ΠΎΠ²ΠΎΠ΅ диагностичСскоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ V1116 | Π‘Π΅Ρ‚ΠΊΠ° β€” ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ hh.ru