tgoop.com/pvsstudio_rus/1859
Create:
Last Update:
Last Update:
Π‘++ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, Ρ Π½Π°Ρ ΠΎΡΠ»ΠΈΡΠ½ΡΠ΅ Π½ΠΎΠ²ΠΎΡΡΠΈ β Π² ΡΠ΅Π»ΠΈΠ·Π΅ 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