// ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ "false" ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎ
// ΠΎΡΠΈΡΡΠΊΡ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°Π» ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ°.
CleanDp(false);
}
}
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ MyResourceWrapper ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Cleanup(). ΠΡΠ»ΠΈ Π΄Π»Ρ Π΅Π³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΠΊΠ°Π·Π°Π½ΠΎ true (ΠΈΡΡΠΈΠ½Π°), ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΡΠ±ΠΎΡΠΊΡ ΠΌΡΡΠΎΡΠ° ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°Π» ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π ΡΠΎΠ³Π΄Π° ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅, ΠΈ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΡΠ΅ΡΡΡΡΡ. ΠΠΎ Π΅ΡΠ»ΠΈ "ΡΠ±ΠΎΡΠΊΠ°" ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°Π½Π° ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ°, ΡΠΎ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ CleanUp() ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ false (Π»ΠΎΠΆΡ), ΡΡΠΎΠ±Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π»ΠΈΡΡ (ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ). ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΡ ΠΎΠ΄ΠΎΠΌ ΠΈΠ· CleanUp() ΡΠ»Π΅Π½-ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ disposed Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°Π²Π½ΠΎΠΉ true, ΡΡΠΎΠ±Ρ Dispose() ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ Π±Π΅Π· ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ .
ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄. ΠΡΠΎΠ΅ΠΊΡ FinalizableDisposableClass ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌ Π³Π»Π°Π²Π΅ 5.
ΠΠ° ΡΡΠΎΠΌ Π½Π°ΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡΠ΅Π΄Π° CLR ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ°, Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ. ΠΡΡΠ°Π»ΠΈΡΡ Π½Π΅ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠΌΠΈ Π΅ΡΠ΅ ΡΡΠ΄ Π²ΠΎΠΏΡΠΎΡΠΎΠ², ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ° (ΡΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π°Π±ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²), Π½ΠΎ Π²Ρ ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΠΌΠ΅Π΅ΡΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π·Π½Π°Π½ΠΈΠΉ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ΅ΠΌΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π² ΡΠ΄ΠΎΠ±Π½ΠΎΠ΅ Π΄Π»Ρ Π²Π°Ρ Π²ΡΠ΅ΠΌΡ.
Π Π΅Π·ΡΠΌΠ΅
Π¦Π΅Π»ΡΡ ΡΡΠΎΠΉ Π³Π»Π°Π²Ρ Π±ΡΠ»ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ°. ΠΡ ΠΌΠΎΠ³Π»ΠΈ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ° Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΌ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ (ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ Π²ΡΠ³ΡΡΠΆΠ°Π΅ΡΡΡ Π΄ΠΎΠΌΠ΅Π½ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ). ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Ρ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° Π² ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Microsoft, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π²ΡΠΎΡΠΈΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π΄Π»Ρ ΡΠΈΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
Π ΡΡΠΎΠΉ ΠΆΠ΅ Π³Π»Π°Π²Π΅ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠΏΠ° ΠΊΠ»Π°ΡΡΠ° System.GC Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΎ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ°. ΠΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠΈΠΏΠΎΠ², ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΠΈΡ ΡΠΈΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ»ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ². Π’ΠΈΠΏΡ, ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΠΈΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΊΠ»Π°ΡΡΡ Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ System.Object.Finalize(), ΠΊΠΎΡΠΎΡΡΠΉ (Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ) Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΡΠ΅ΡΡΡΡΠΎΠ². ΠΠ±ΡΠ΅ΠΊΡΡ, ΠΏΡΠ΅Π΄ΡcΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΠΈΠ΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ², ΡΠ²Π»ΡΡΡΡΡ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ (ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ), Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ IDisposable. Π ΡΠ°ΠΌΠΊΠ°Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΎΡΠΊΡΡΡΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ''ΡΠ±ΠΎΡΠΊΠΈ" ΡΡΠ°Π·Ρ ΠΆΠ΅, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²Ρ ΡΠ·Π½Π°Π»ΠΈ ΠΎΠ± "ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ" ΡΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ°Π±Π»ΠΎΠ½Π΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ², Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΡΡΡΡΡ ΠΎΠ±Π° ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°.
ΠΠΠΠΠ 6. Π‘ΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ
Π’Π΅ΠΌΠ° ΡΡΠΎΠΉ Π³Π»Π°Π²Ρ β ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΉ Π² ΡΡΠ΅Π΄Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° C# Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ. ΠΡ ΡΠ·Π½Π°Π΅ΡΠ΅ ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ²Π°Ρ C#, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ΅ΡΠ°ΡΡ ΡΠ°ΠΊΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ (ΡΡΠΎ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° try, catch, throw, finally), ΠΈ Π²ΡΡΡΠ½ΠΈΡΠ΅, Π² ΡΠ΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΈ ΡΡΠΎΠ²Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ°Π½Π½ΠΎΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ, ΠΊΠ°ΠΊ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΊΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ² ΠΎΡΠ»Π°Π΄ΠΊΠΈ Visual Studio 2005, Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡΠΎΡΡΡ , ΠΏΠΎ ΡΡΡΠΈ, ΠΈ Π»Π΅ΠΆΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ.
ΠΠ΄Π° ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌ
ΠΠ½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ Π½Π°ΠΌ Π½Π°ΡΠ° (ΡΠ°ΡΡΠΎ ΠΏΡΠ΅ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π½Π°Ρ) ΡΠ°ΠΌΠΎΠΎΡΠ΅Π½ΠΊΠ°, Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°ΠΆΠ΅ ΡΠ°ΠΌΡΠ΅ Π»ΡΡΡΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π±ΡΠ²Π°Π΅Ρ Π½Π΅ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΡΠΉ: ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΡ ΠΎΠ΄ Π·Π° Π³ΡΠ°Π½ΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°). Π Π΄ΡΡΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈΠ·-Π·Π° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ , Π²Π²ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π²ΠΎΠ΄ ΠΈΠΌΠ΅Π½ΠΈ Π² ΠΏΠΎΠ»Π΅ ΡΠ΅Π»Π΅ΡΠΎΠ½Π½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅ΡΠ°), Π΅ΡΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°ΠΊΠΈΡ Π΄Π°Π½Π½ΡΡ Π½Π΅ Π±ΡΠ»Π° ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΏΡΠΈΡΠΈΠ½ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π²ΡΠ΅Π³Π΄Π° ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π§ΡΠΎΠ±Ρ ΠΎΡΠ΅ΡΡΠΈΡΡ ΡΠ°ΠΌΠΊΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΠ΅ ΡΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ΅Ρ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ², ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΡΠΈ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΉ.
β’ ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΡΠΎ, ΠΏΠΎΠΏΡΠΎΡΡΡ Π³ΠΎΠ²ΠΎΡΡ, ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ·ΡΠΊΠ° C++ Π±Π΅Π· ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ, Π΅ΡΠ»ΠΈ Π²ΡΠ·Π²Π°ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ NULL ΠΈΠ»ΠΈ Π·Π°Π±ΡΡΡ ΠΎΡΠΈΡΡΠΈΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ (Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ''ΡΡΠ΅ΡΠΊΠ°" ΠΏΠ°ΠΌΡΡΠΈ), ΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°.
β’ ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΎΠ±ΡΡΠ½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π° Π½Π΅ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π²ΠΎΠ΄ΠΈΡ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ Π±Π»ΠΎΠΊ ΡΡΡΠΎΠΊΡ "Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°", ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ, Π΅ΡΠ»ΠΈ Π²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Π½Π΅ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ Π²Π²ΠΎΠ΄.
β’ ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΎΡΠ²Π»ΡΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΉ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΈ ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΄Π½ΠΎ, Π΅ΡΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΡΠ΅ΡΡΡ ΠΈΡ Π²ΡΠ΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠΈΡΡΠ°ΡΠΈΡΠΌ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΏΠΎΠΏΡΡΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡΡΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΠΎΡΠΊΡΡΡΡ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ», ΠΊΠΎΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΊΠ»ΡΡΠ΅Π½. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ, ΠΊΠ°ΠΊ ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ, ΠΈΠΌΠ΅ΡΡ ΠΎΡΠ΅Π½Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ "ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²Π°Ρ ".
Π‘ ΡΡΠ΅ΡΠΎΠΌ Π΄Π°Π½Π½ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΡΠ½ΠΎ, ΡΡΠΎ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π² .NET ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ Π² ΡΡΠ΅Π΄Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΊΠΎΠ»ΡΠ·Π½ΡΠ»ΠΈ ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ, ΡΡΠ΅Π΄Π° CLR Π·Π°ΡΠ°ΡΡΡΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡΠ΅Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² .NET ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ΅Π»ΡΠΉ ΡΡΠ΄ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ FormatException, IndexOutOfRangeException, FileNotFoundException, ArgumentOutOfRangeExΡeption ΠΈ Ρ.Π΄.
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΡΠ³Π»ΡΠ±ΠΈΡΡΡΡ Π² Π΄Π΅ΡΠ°Π»ΠΈ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΡΠΎΠ»Ρ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΈ Π²ΡΡΡΠ½ΠΈΠΌ, ΡΠ΅ΠΌ ΡΠ°ΠΊΠ°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π² Π΄Π΅Π»Π΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌΠΈ, Π² Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π½Π΅ Π°ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΡΠΈΠ΅ΠΌΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ²ΠΎΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ.
Π ΠΎΠ»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π² .NET
ΠΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ .NET ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Windows ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ»Π° ΡΠΎΠ±ΠΎΠΉ Π²Π΅ΡΡΠΌΠ° Π·Π°ΠΏΡΡΠ°Π½Π½ΡΡ ΡΠΌΠ΅ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΈ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π³ΡΡΠΏΠΏΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΌΠΎΠ³Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½Π°Π±ΠΎΡ ΡΠΈΡΠ»ΠΎΠ²ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΡΠ±ΠΎΠΉΠ½ΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²Π·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΡΠ·ΡΠΊΠ΅ C.
/* Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΡΠ΅ΡΠ° ΠΎΡΠΈΠ±ΠΎΠΊ Π² C. */
#define E_FILENOTFOUND 1000
int SomeFunction() {
// ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΡΠΈΡΡΠ°ΡΠΈΡ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅
// ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
return E_FILENOTFOUND;
}
void Main() {
int retVal = SomeFunction();
if (retVal == E_FILE_NOTFOUND) printf("ΠΠ΅ Π½Π°ΠΉΠ΄Π΅Π½ ΡΠ°ΠΉΠ»β¦");
}
Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΈΠ·Π½Π°ΡΡ Π΄Π°Π»Π΅ΠΊΠΈΠΌ ΠΎΡ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ ΡΡΠ΅ΡΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° E_FILENOTFOUND ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈΡΡ ΡΠΈΡΠ»ΠΎΠ²ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, Π° Π½Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠΌ Π°Π³Π΅Π½ΡΠΎΠΌ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΡΠ΅ΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π ΠΈΠ΄Π΅Π°Π»Π΅ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ Π½Π΅ΠΉ ΠΈ Π΄ΡΡΠ³ΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ΅ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° (ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ).
Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΡΠΈΠ΅ΠΌΠ°ΠΌ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, Windows API ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠΎΡΠ½ΠΈ ΠΊΠΎΠ΄ΠΎΠ² ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ #define, HRESULT, Π° ΡΠ°ΠΊΠΆΠ΅ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π²Π°ΡΠΈΠ°ΡΠΈΠΉ Π±ΡΠ»Π΅Π²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ (bool, BOOL, VARIANT_BOOL ΠΈ Ρ.Π΄.). ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ C++ (Π° ΡΠ°ΠΊΠΆΠ΅ VB6) Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ COM ΡΠ²Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠ²Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ COM-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ISupportErrorInfo, IErrorInfo, ICreateErrorInfo), ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ COM-ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ .
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΡΡΠΎΠΉ ΡΠΆΠ΅ ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΉ ΡΡ Π΅ΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ Π² ΡΠ°ΠΌΠΊΠΈ ΡΠ²ΠΎΠ΅ΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π°ΠΆΠ΅ Π² ΡΠ°ΠΌΠΊΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ ΠΊΠΎΠ½Π΅Ρ Π½Π΅ΡΠ΅ΠΌΠ½ΠΎΠΌΡ Π±ΡΠΉΡΡΠ²Ρ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΡ, ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° .NET ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ: ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ β Π‘ΠΠ (Structured Exception Handling β SEH).