Π§ΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π±ΡΡΡΡΠΎ ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π΄Π½Ρ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² Π½Π΅ΠΌ ΠΏΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ²ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠ³Π»ΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ, Π½ΠΎ ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:"ΠΠ½ΠΈΠ»ΠΎΠΉ" ΠΊΠΎΠ΄ β ΡΡΠΎ ΡΡΡΠ»ΠΈΠ²ΡΠΉ ΡΠ΅ΡΠΌΠΈΠ½, ΠΏΡΠΈΠ΄ΡΠΌΠ°Π½Π½ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ ΠΎΡΠΎΡΠΎ ΠΎΡΠ»Π°ΠΆΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²Π΄ΡΡΠ³ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌΠΈ ΠΈ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ. ΠΠ± ΡΡΠΎΠΌ ΡΠ²Π»Π΅Π½ΠΈΠΈ Π½Π΅ ΡΡΠΎΠΈΡ Π·Π°Π±ΡΠ²Π°ΡΡ, Π²Π΅Π΄Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°ΡΡΠΎ Π±ΡΠ²Π°ΡΡ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ, ΠΈΠ·-Π·Π° ΡΠ΅Π³ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΈ Π»ΡΠΏΡΡΡΡ ΠΌΠΎΠ³ΡΡ Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ Π² ΡΠ΅Π½ΠΈ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡΠΎΡΠ²ΡΡ ΡΠ΅Π±Ρ Π²ΠΎ Π²ΡΠ΅ΠΉ ΠΊΡΠ°ΡΠ΅. ΠΠ»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ "ΠΏΠ»Π΅ΡΠ΅Π½ΠΈ" Π½ΡΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ°ΠΌΠΈΠΌ Π±ΡΠ»ΠΎ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ.
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Π°Ρ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΡΠΎΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²Ρ ΠΈ Π½Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΠ΅, ΡΡΠΎ ΠΊΡΠΎ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ, ΠΊΡΠΎΠΌΠ΅ Π²Π°Ρ, ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π³Π»ΡΠ½ΡΡΡ Π² Π½Π΅Π³ΠΎ. ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠΉΠ΄Π΅Ρ ΠΌΠ΅ΡΡΡΠ΅Π² ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΡΠ΅ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΡ, Π²Ρ ΡΠ°ΠΌΠΈ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΡΠ²ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π³Π»Π°Π·Π°ΠΌΠΈ ΠΏΠΎΡΡΠΎΡΠΎΠ½Π½Π΅Π³ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΈ ΡΠ΄ΠΈΠ²Π»ΡΡΡΡΡ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ ΠΈ ΠΈΠ·Π²ΠΈΠ»ΠΈΡΡΡΠΉ ΠΊΠΎΠ΄, Π½Π°Π΄Π΅ΡΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π° ΡΡΠΏΠ΅ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ.
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
Π C++ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΈΠ· ΠΎΠ±Π»Π°ΡΡΠΈ ΠΊΠΎΠ΄Π°, Π³Π΄Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π² ΡΡ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π°, Π³Π΄Π΅ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ. Π’ΠΈΠΏ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊΠ°Ρ ΠΎΠ±Π»Π°ΡΡΡ ΠΊΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΠΊΠ°ΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΈΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ°.
β’ Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ»ΠΈ Π·Π°Ρ Π²Π°Ρ ΡΠ°ΠΉΠ»Π°) ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅.
β’ ΠΡΡ ΠΎΠ΄ ΠΈΠ· ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π²ΠΎΠ·Π½ΠΈΠΊΡΠ΅ΠΉ ΠΏΡΠΈ ΡΠ±ΠΎΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈΠ·-Π·Π° Π½Π΅Ρ Π²Π°ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ»ΠΈ Π·Π°Ρ Π²Π°ΡΠ° ΡΠ°ΠΉΠ»Π° Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π½Π° Π²ΡΡΠΎΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠ΅ΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ.
β’ ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΎΡ ΠΊΠΎΠ΄Π° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΊ ΠΊΠΎΠ΄Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ. ΠΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π» Π΅Π΅ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅, Π½ΠΎ ΠΈ ΠΌΠΎΠ³ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΡΠΉ Π²ΡΡ ΠΎΠ΄ ΠΈΠ· ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡΠΌΠ΅Π½Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Π΅Π΅ Π½Π΅Ρ Π²Π°ΡΠΊΠΈ.
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
Π‘ΠΎΠ·Π΄Π°ΡΡΡΡ Π±Π»ΠΎΠΊΠΈ try Π΄Π»Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π² Π½ΠΈΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
try
{
SomeDangerousFunction();
}
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Π²ΠΎΠ·Π½ΠΈΠΊΡΠΈΠ΅ Π² Π±Π»ΠΎΠΊΠ°Ρ try, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π² Π±Π»ΠΎΠΊΠ°Ρ catch, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
try
{
SomeDangerousFunction();
}
catch(OutOfMemory)
{
// ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ
}
catch(FileNotFound)
{
// ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ Π΄ΡΡΠ³ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ
}
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ.
1. ΠΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠΉΡΠ΅ ΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π³Π΄Π΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠ³Π»Π° Π±Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΈΡ Π² Π±Π»ΠΎΠΊΠΈ try.
2. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π±Π»ΠΎΠΊΠΈ catch Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ²ΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡ, ΠΎΡΠΈΡΡΠΊΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 20.1 ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ² try ΠΈ catch.
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅.
ΠΠ»ΠΎΠΊ try β ΡΡΠΎ Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΉ Π² ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ Π±Π»ΠΎΠΊ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΏΠΎΡΠΎΠ±Π½ΡΠ΅ Π²ΡΠ·Π²Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ.
ΠΠ»ΠΎΠΊ catch β ΡΡΠΎ Π±Π»ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π° Π±Π»ΠΎΠΊΠΎΠΌ try ΠΈ Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ.
ΠΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π±Π»ΠΎΠΊΡ catch, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠ°Π·Ρ Π·Π° ΡΠ΅ΠΊΡΡΠΈΠΌ Π±Π»ΠΎΠΊΠΎΠΌ try.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ΅Π½Ρ ΡΡΠ°ΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ° ANSI C++. ΠΡΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, Π²Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π»ΠΈΡΡΠΈΠ½Π³ΠΈ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π½Π° ΡΡΠΎΠΌ Π·Π°Π½ΡΡΠΈΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ Π²ΡΠ΅ ΠΆΠ΅ ΡΡΠΎΠΈΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» Π΄ΠΎ ΠΊΠΎΠ½ΡΠ°, Π° Π·Π°ΡΠ΅ΠΌ Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ Π½Π΅ΠΌΡ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°.
ΠΠΈΡΡΠΈΠ½Π³ 20.1. ΠΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ
1: #include <iostream.h>
2:
3: const int DefaultSize = 10;
4:
5: class Array
6: {
7: public:
8: // ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ
9: Array(int itsSize = DefaultSize);
10: Array(const Array &rhs);
11: ~Array() { delete [] pType;}
12:
13: // ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ
14: Array& operator=(const Array&);
15: int& operator[](int offSet);
16: const int& operator[](int offSet) const;
17:
18: // ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄ΠΎΡΡΡΠΏΠ°
19: int GetitsSize() const { return itsSize; }
20:
21: // ΡΡΠ½ΠΊΡΠΈΡ-Π΄ΡΡΠ³
22: friend ostream& operator<< (ostream&, const Array&);
23:
24: class xBoundary { } ; // ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ
25: private:
26: int *pType;
27: int itsSize;
28: };
29:
30:
31: Array::Array(intsize):
32: itsSize(size)
33: {
34: ΡΠ’ΡΡΠ΅ = new int[size];
35: for (int i = 0; i<size; i++)
36: pType[i] = 0;
37: }
38:
39:
40: Array& Array::operator=(const Array &rhs)
41: {
42: if (this == &rhs)
43: return *thts;
44: delete [] pType;
45: itsSize = rhs.GetitsSiza();
46: pType = new int[itsSize];
47: for (int i = 0; i<itsSize; i++)
48: pType[i] = rhs[i];
49: return *this;
50: }
51:
52: Array::Array(const Array &rhs)
53: {
54: itsSize = rhs.GetitsSize();
55: pType = new int[itsSize];
56: for (int i = 0; i<itsSize; i++)
57: pType[i] = rhs[i];
58: }
59:
60:
61: int& Array::operator[](int offSet)
62: {
63: int size = GetitsSize();
64: if (offSet >= 0 && offSet < GetitsSize())
65: return pType[offSet];
66: throw xBoundary();
67: return pType[0]; // ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°
68: }
69:
70:
71: const int& Array::operator[](int offSet) const
72: {
73: int mysize = GetitsSize();
74: if (offSet >= 0 && offSet < GetitsSize())
75: return pType[offSet];
76: throw xBoundary();
77: return pType[0]; // ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°
78: }
79:
80: ostream& operator<< (ostream& output, const Array& theArray)
81: {
82: for (int i = 0; i<theArray,GetitsSize(); i++)
83: output << "[" << i << "] " << theArray[i] << endl;
84: return output;
85: }
86:
87: int main()
88: {
89: Array intArray(20);
90: try
91: {
92: for (int ] << 0; j< 100; j++)
93: {
94: intArray[j] = j;
95: cout << "intArray[" << j << "] okay..." << endl;
96: }
97: }
98: catch (Array::xBoundary)
99: {
100: cout << "Unable to process your input!\n";
101: }
102: cout << "Done.\n";
103: return 0;
104: }
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
intArray[0] okay...
intArray[1] okay...
intArray[2] okay...
intArray[3] okay...
intArray[4] okay...
intArray[5] okay...
intArray[6] okay...
intArray[7] okay...
intArray[8] okay...
intArray[9] okay...
intArray[10] okay...
intArray[11] okay...
intArray[12] okay...
intArray[13] okay...
intArray[14] okay...
intArray[15] okay...
intArray[16] okay...
intArray[17] okay...
intArray[18] okay...
intArray[19] okay...
Unable to process your input!
Done.
ΠΠ½Π°Π»ΠΈΠ·: Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 20.1 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ΅ΡΠ΅Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ Array, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΡΠ°Π±Π»ΠΎΠ½Π΅, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠΌ Π½Π° Π·Π°Π½ΡΡΠΈΠΈ 19.
Π ΡΡΡΠΎΠΊΠ΅ 24 ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ xBoundary Π²Π½ΡΡΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ° Array.
Π ΡΡΠΎΠΌ Π½ΠΎΠ²ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ Π½ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°ΠΌ Π½Π΅Π»ΡΠ·Ρ ΡΠ·Π½Π°ΡΡ ΠΊΠ»Π°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ. ΠΠ½ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΡΠΎΡΡ ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΡΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΡΠΉ ΠΊΠ»Π°ΡΡ.
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π±ΡΠ»ΠΎ Π±Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡΡ, ΡΡΠΎ ΠΎΠ½ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°Π·Π½Π°ΡΠ°Π΅Ρ Π΅ΠΌΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ-ΠΊΠΎΠΏΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ (=), ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½Π΅Π³ΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π΅ΡΡΡ ΡΠ΅ΡΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π°, Π½ΠΎ Π½Π΅Ρ Π΄Π°Π½Π½ΡΡ .
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ Π΅Π³ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ° Array ΡΠ»ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π΄Π²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² Π³Π»Π°Π²Π΅ 15, ΠΊΠ»Π°ΡΡ Array Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΠ»Π°ΡΡΡ xBoundary, Π΄Π° ΠΈ ΠΊΠ»Π°ΡΡ xBoundary Π½Π΅ Π½Π°Π΄Π΅Π»Π΅Π½ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ Π΄ΠΎΡΡΡΠΏΠΎΠΌ ΠΊ ΡΠ»Π΅Π½Π°ΠΌ ΠΊΠ»Π°ΡΡΠ° Array.
Π ΡΡΡΠΎΠΊΠ°Ρ 61β68 ΠΈ 71β78 ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ([]) Π·Π°ΠΌΠ΅ΡΠ΅Π½Ρ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²Π²Π΅Π΄Π΅Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ Π²Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ xBoundary Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΡΡΠ³Π»ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΡΠ΄Π΅Π»ΠΈΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΠΊΠ»Π°ΡΡΠ° xBoundary ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Microsoft ΡΡΠ΅Π±ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π»ΠΎΡΡ ΡΡΡΠΎΠΊΠΎΠΉ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ return, ΡΠΎΠ³Π»Π°ΡΡΡΡΠ΅ΠΉΡΡ ΠΏΠΎ ΡΠΈΠΏΡ Ρ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅), Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ Π² ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ Π² ΡΡΡΠΎΠΊΠ΅ 66 Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΡΡΠΈΠ³Π½Π΅Ρ ΡΡΡΠΎΠΊΠΈ 67. ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π΅ ΡΡΠΆΠ΄Ρ Π΄Π°ΠΆΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Microsoft!