Console.WriteLine("Π‘Π»ΡΡΠΈΠ»ΠΎΡΡ ΡΡΠΎ-ΡΠΎ ΡΠΆΠ°ΡΠ½ΠΎΠ΅β¦");
}
β¦
}
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΌΡΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π΄Π΅ΡΡ Π²Ρ Π½Π΅ ΠΈΠΌΠ΅Π΅ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ΅Π΄ΡΠ΅ΠΉ ΠΎΡΠΈΠ±ΠΊΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Π°, ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΠ΅ΠΊΠ° Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅). Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² C# ΡΠ°ΠΊΠ°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°.
ΠΠ΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠΎΡΠΈΡΠ½ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ
ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π½Π°ΡΡ, ΡΡΠΎ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π»ΠΎΠ³ΠΈΠΊΠΈ try ΠΈΠΌΠ΅Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅ΠΉΡΡ Π²ΡΡΠ΅ ΠΏΠΎ ΡΠ΅ΠΏΠΎΡΠΊΠ΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π² ΡΡΠ΅ΠΊΠ΅ Π²ΡΠ·ΠΎΠ²ΠΎΠ². ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ throw Π² ΡΠ°ΠΌΠΊΠ°Ρ Π±Π»ΠΎΠΊΠ° Ρatch. Π’Π΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΎ Π²ΡΡΠ΅ ΠΏΠΎ ΡΠ΅ΠΏΠΎΡΠΊΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½ΡΠΉ Π±Π»ΠΎΠΊ catch Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ.
// ΠΠ΅ΡΠ΅ΠΊΠ»Π°Π΄ΡΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ.
static void Main (string[] args) {
β¦
try {
// ΠΠΎΠ³ΠΈΠΊΠ° ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρβ¦ }
catch(CarIsDeadException e) {
// Π§Π°ΡΡΠΈΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
// ΠΠ΄Π΅ΡΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ CarIsDeadException.
// ΠΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π΄ΡΡΠ³ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
throw e;
}
β¦
}
ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΌ CarIsDeadException ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ΅Π΄Π° CLR, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π·Π΄Π΅ΡΡ Π²ΡΠΎΡΠΈΡΠ½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Main(). ΠΠΎΡΡΠΎΠΌΡ Π²Π°ΡΠ΅ΠΌΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π²ΡΠΎΡΠΈΡΠ½ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Π΅, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ "Π³ΡΠ°ΡΠΈΠΎΠ·Π½ΠΎ".
ΠΠ½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ³Π°Π΄ΡΠ²Π°ΡΡΡΡ, ΡΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π²Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΠ΅ CarIsDeadException Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° catch ΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ»Π΅Π΄ ΡΡΠ΅ΠΊΠ° Π² ΡΠ°ΠΉΠ» carErrors.txt Π½Π° Π²Π°ΡΠ΅ΠΌ Π΄ΠΈΡΠΊΠ΅ C.
catch(CarlsDeadException e) {
// ΠΠΎΠΏΡΡΠΊΠ° ΠΎΡΠΊΡΡΡΡ ΡΠ°ΠΉΠ» carErrors.txt Π½Π° Π΄ΠΈΡΠΊΠ΅ C.
FileStream fs = File.Open(@"C:\carErrors.txt", FileMode.Open);
β¦
}
ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π½Π° Π΄ΠΈΡΠΊΠ΅ C Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, ΠΏΠΎΠΏΡΡΠΊΠ° Π²ΡΠ·ΠΎΠ²Π° File.Open() Π΄Π°ΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ FileNotFoundException. ΠΠΎΠ·ΠΆΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ System.IO ΠΈ Π²ΡΡΡΠ½ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠΊΡΡΡΠΈΠ΅ΠΌ ΡΠ°ΠΉΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Π½Π° ΠΆΠ΅ΡΡΠΊΠΎΠΌ Π΄ΠΈΡΠΊΠ΅ (ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ). ΠΠ΄Π½Π°ΠΊΠΎ Π·Π΄Π΅ΡΡ, ΡΡΠΎΠ±Ρ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΡΠ΅ΠΌΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, ΠΌΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, ΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ.
ΠΠΎΠ³Π΄Π° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π΄ΡΡΠ³ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊ "Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅" Π² ΡΠ°ΠΌΠΊΠ°Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ°, ΡΡΠΎ ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ (ΡΠ·ΡΠΊ ΡΠ»ΠΎΠΌΠ°Π΅ΡΡ!). ΠΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°. Π Π°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
catch (CarIsDeadException e) {
try {
FileStream fs = File.Open(@"C:\carErrors.txt", FileMode.Open);
β¦
} catch(Exception e2) {
// ΠΠ΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΠ΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
// ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
throw new CarIsDeadException(e.Message, e2);
}
}
ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π² ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ FileNotFoundException ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ CarIsDeadException Π² Π²ΠΈΠ΄Π΅ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. Π‘ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π² ΡΡΠΎΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΌΡ Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΏΠΎ ΡΡΠ΅ΠΊΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ Main().
Π‘ ΡΡΠ΅ΡΠΎΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ Main() "ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²" Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π½Π΅Ρ, ΠΌΡ ΡΠ½ΠΎΠ²Π° Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠΎΡΠΈΡΠ½ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, Π·Π°ΠΏΠΈΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΡΠ°ΡΠΈΠ²ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π»ΠΎΠ³ΠΈΠΊΠ° catch Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ InnerException Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
ΠΠ»ΠΎΠΊ finally
Π ΡΠ°ΠΌΠΊΠ°Ρ try/catch ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ finally. ΠΠ°Π΄Π°ΡΠ° Π±Π»ΠΎΠΊΠ° finally β ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π½Π°Π»ΠΈΡΠΈΡ ΠΈΠ»ΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ (Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°). ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²ΡΠ΅Π³Π΄Π° Π²ΡΠΊΠ»ΡΡΠ°ΡΡ ΡΠ°Π΄ΠΈΠΎ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΡ ΠΎΠ΄ΠΎΠΌ ΠΈΠ· Main(), Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ.
static void Main(string[] args) {
β¦
Car myCar = new Car ('"Zippy", 20);
myCar.CrankTunes(true);
try {
// ΠΠΎΠ³ΠΈΠΊΠ° ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ.
} catch (CarIsDeadException e) {
// ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° CarIsDeadException.
} catch (ArgumentOutOfRangeException e) {
// ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ArgumentOutOfRangeException.
} catch(Exception e) {
// ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ.
} finally {
// ΠΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π²ΡΠ΅Π³Π΄Π°. ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ.
myCar.CrankTunes(false);
}
}
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Π²ΠΊΠ»ΡΡΠΈΡΠ΅ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π±Π»ΠΎΠΊ finally, ΡΠΎ ΡΠ°Π΄ΠΈΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΊΠ»ΡΡΠ°ΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ (ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ»ΠΈ Π½Π΅ Π±ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ). Π Π±ΠΎΠ»Π΅Π΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡ ΡΠ΅ΡΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π·Π°ΠΊΡΡΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ, ΠΎΡΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΎΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ ΠΈ Ρ.Π΄., Π±Π»ΠΎΠΊ finally ΠΌΠΎΠΆΠ΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ "ΡΠ±ΠΎΡΠΊΡ".
Π§ΡΠΎ ΠΈ ΡΠ΅ΠΌ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ
Π‘ ΡΡΠ΅ΡΠΎΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ Π² .NET Framework ΠΌΠΎΠ³ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ (Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²), Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΎΠΏΡΠΎΡ: "ΠΠ°ΠΊ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΠ΅ΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ²?" ΠΡΠ²Π΅Ρ ΠΏΡΠΎΡΡ: ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ½ΠΈΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ .NET Framework 2.0 SDK. Π ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΏΡΠ°Π²ΠΊΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠΊΠ°Π·Π°Π½Ρ ΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠΉ ΡΠ»Π΅Π½. Π Visual Studio 2005 Π²Π°ΠΌ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ, Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ: ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ (Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ²ΡΠ΅ ΠΈΠΌΠ΅ΡΡΡΡ), Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΡ Π΄Π°Π½Π½ΡΠΌ ΡΠ»Π΅Π½ΠΎΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ², Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π·Π°Π΄Π΅ΡΠΆΠ°ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΌΡΡΠΈ Π½Π° ΠΈΠΌΠ΅Π½ΠΈ ΡΠ»Π΅Π½Π° Π² ΠΎΠΊΠ½Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (ΡΠΈΡ. 6.6).
Π ΠΈΡ. 6.6. ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΡ Π΄Π°Π½Π½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ
Π’Π΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΡΠ»ΠΈ ΠΊ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ .NET, ΠΈΠΌΠ΅Ρ ΠΎΠΏΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Java, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ. ΡΡΠΎ, ΡΠ»Π΅Π½Ρ ΡΠΈΠΏΠ° Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΈΠ· ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ° (Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, .NET Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ). ΠΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π²ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠΌ ΡΠ»Π΅Π½ΠΎΠΌ. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΡΠ΅ΠΌ Π·Π°Ρ Π²Π°ΡΠ° ΡΠΎΠ»ΡΠΊΠΎ System.Exception.
static void Main(string[] args) {
try {
File.Open("IDontExist.txt", FileMode.Open);
} catch(Exception ex) {
Console.WriteLine(ex.Message);
}
}
ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠΎ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π±Π»ΠΎΠΊΠΎΠ² catch, ΠΊΠ°ΠΊ Π±ΡΠ»Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅.
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΠΎΡΡΠ°Π²ΡΠΈΠ΅ΡΡ Π±Π΅Π· ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ
ΠΠ΄Π΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΡΠΎΡΠΈΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π½Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ΅ Π² Π²Π°Ρ Π°Π΄ΡΠ΅Ρ? ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ°. Main() ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Car Π²ΡΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ Π² ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ try/catch. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠ΅ΡΠ°ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠ΅ΡΠ΅Π΄ Π΅Π³ΠΎ Π³Π»Π°Π·Π°ΠΌΠΈ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ "Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ". ΠΡΠ»ΠΈ Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ .NET, ΠΏΠΎΡΠ²ΠΈΡΡΡ Π½Π΅ΡΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΈΡ. 6.7 (ΠΌΠ°ΡΠΈΠ½Π° Π±Π΅Π· ΡΡΠ΅Π΄ΡΡΠ² ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠ΅, Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π½Π°Π·ΠΎΠΉΠ»ΠΈΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ).
Π ΠΈΡ 6.7. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄. ΠΡΠΎΠ΅ΠΊΡ Custom Exception ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌ Π³Π»Π°Π²Π΅ 6.
ΠΡΠ»Π°Π΄ΠΊΠ° Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π² Visual Studio 2005
Π Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ Π½Π°ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π² Visual Studio 2005 ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΡΠ΅Π»ΡΠΉ ΡΡΠ΄ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΡΠ»Π°Π΄ΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌΠΈ. Π‘Π½ΠΎΠ²Π° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΌΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ»ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Car Π²ΡΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠ°. ΠΡΠ»ΠΈ Π² Visual Studio Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅Π°Π½Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ DebugβStart ΠΈΠ· ΠΌΠ΅Π½Ρ), ΡΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅ΡΠ²Π΅ΡΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΠΎΡΡΠ°Π²ΡΠ΅Π³ΠΎΡΡ Π±Π΅Π· ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΎΠΊΠ½ΠΎ (ΡΠΈΡ. 6.8), Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Message.