рдПрдХ рдЕрд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛: 4 рдХрд╛ рдкреАрдЯреА 2

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореБрджреНрджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдФрд░ рдореБрдЦреНрдп рдХрд╛рд░рдг, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕рд╛рджрдЧреА рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рд╣рдореЗрд╢рд╛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рд╕рднреА рдмреБрдирд┐рдпрд╛рджреА рдирд┐рд░реНрдорд╛рдг рдЬреИрд╕реЗ IEnumerable , IDisposable , IObservable , рдЖрджрд┐ред рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рд╣реИ рдФрд░ рд╣рд░ рдЬрдЧрд╣ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдУрд░, рдЙрдирдХреА рд╕рд╛рджрдЧреА рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЗрди рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреА рд╣реИред рджреВрд╕рд░реА рдУрд░, рд╡реЗ рдЬрд╛рд▓ рд╕реЗ рднрд░реЗ рд╣реБрдП рд╣реИрдВ рдЬреЛ рдЖрдк рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓ рд╕рдХрддреЗред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХреА рдЧрдИ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рджреЗрдЦрдХрд░ рдЖрдкрдХреЛ рдПрдХ рд╕рд╡рд╛рд▓ рдорд┐рд▓ рдЧрдпрд╛ рд╣реЛ: рдЕрд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдЦрд╛рд╕ рд╣реИ?


рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдкрд╡рд╛рдж рд╡рд░реНрдЧреЛрдВ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЙрдирдХреЗ рд╡рд░реНрдЧреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╡рд┐рд╡рд░рдг рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЬреЛ рдХреЛрдб рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧреА, рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрдм рддреНрд░реБрдЯрд┐ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЪреБрдирдирд╛ рд╣реИ рдФрд░ рдХрдм рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝рдирд╛ рдпрд╛ рдЫреЛрдбрд╝рдирд╛ рд╣реИред рддреЛ, рдЖрдЗрдП рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐рдпреЛрдВ (рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░) рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рди рдХрд░реЗрдВред


рднрд╡рд┐рд╖реНрдп рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред


рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣рдо рдЙрди рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрдХрдбрд╝реЗ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдЬреЛ рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╡рд╛рд▓реЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рдирд╣реАрдВ рдкрдХрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рдореИрдВ рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдХреНрдпреЛрдВ рдХрд╣реВрдВ? рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрд╢рд╛ рдХреЛрдИ рдРрд╕рд╛ рд╡реНрдпрдХреНрддрд┐ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛ рдЬрдмрдХрд┐ рдпрд╣ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИред


рдкрд╣рд▓реЗ, рдЪрд▓реЛ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдкрд╣рд▓реЗ рд╕рдореВрд╣ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ - рдЬрд┐рдиреНрд╣реЗрдВ рдкрдХрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рддрд░рдл, рд╣рдо рдЕрдкрдиреЗ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдП рдЬрдм рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рджреВрд╕рд░реА рдУрд░, рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреБрдЫ рднреА рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдирд╣реАрдВ рд╣реБрдЖ рдФрд░ рд╣рдо рдХреЗрд╡рд▓ рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рдХрд░ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдВрдкрддреНрддрд┐ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рдорд╣рддреНрд╡рдкреВрд░реНрдгрддрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рджрд┐рд▓рд╛рддреА рд╣реИ рдХрд┐ рдпрджрд┐ рд╣рдо рдПрдХ рдЕрдкрд╡рд╛рдж рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдкрдХрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдмрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред


рджреВрд╕рд░рд╛ рд╕рдореВрд╣ рдЕрдкрд╡рд╛рджреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрдЬреАрдм рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдкрдХрдбрд╝рд╛ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рддреНрд░реБрдЯрд┐ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ ArgumentException рдФрд░ NullReferenceException ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдкрдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ArgumentNullException рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕реНрд░реЛрдд рдмрд┐рд▓реНрдХреБрд▓ рдЖрдк рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдиреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд╣реИ рдФрд░ рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ:


 void SomeMethod(object argument) { try { AnotherMethod(argument); } catch (ArgumentNullException exception) { // Log it } } 

рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рд╣рдо ArgumentNullException рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рддрд░реНрдХ рджреЗрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдорд╛рд░реА рдЪрд┐рдВрддрд╛ рд╣реИред рдШрдЯрдирд╛ рдХреЗ рдмрд╛рдж рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рдирд╛ рдЧрд▓рдд рд╣реЛрдЧрд╛: рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдк рдЬреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдпрд╛ рдРрд╕реЗ рдХреЛрдб рдХрд╛ рдирд┐рд░реНрдорд╛рдг рднреА рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЧрд▓рдд рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред


рдЕрд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдФрд░ рд╕рдореВрд╣ рдШрд╛рддрдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред рдпрджрд┐ рдХреБрдЫ рдХреИрд╢ рджреЛрд╖рдкреВрд░реНрдг рд╣реИ рдФрд░ рдПрдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдХрд╛рдо рд╡реИрд╕реЗ рднреА рдЧрд▓рдд рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдШрд╛рддрдХ рддреНрд░реБрдЯрд┐ рд╣реИ рдФрд░ рд╕реНрдЯреИрдХ рдкрд░ рдирд┐рдХрдЯрддрдо рдХреЛрдб рдЗрд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдкрдХрдбрд╝реЗрдВрдЧреЗ:


 T GetFromCacheOrCalculate() { try { if(_cache.TryGetValue(Key, out var result)) { return result; } else { T res = Strategy(Key); _cache[Key] = res; return res; } } cache (CacheCorruptedException exception) { RecreateCache(); return GetFromCacheOrCalculate(); } } 

CacheCorruptedException рдПрдХ рдЕрдкрд╡рд╛рдж рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ "рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдХреИрд╢ рдЕрд╕рдВрдЧрдд рд╣реИ"ред рдлрд┐рд░, рдпрджрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдХреИрд╢ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдШрд╛рддрдХ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ), рддреЛ рдирд┐рдореНрди рдХреЛрдб рдлрд┐рд░ рд╕реЗ RecreateCache рдкреБрдирдГ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрди: рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рдирд╛ рд╕реНрд╡рдпрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИред


рдЙрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЬрд╣рд╛рдВ рдПрдХ рдЕрд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрдХрдбрд╝реА рдЬрд╛рддреА рд╣реИ


рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдореЗрдВ рдХреБрдЫ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкрд╛рд╕ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмреЗрд╣рддрд░ рд╕рдордЭрддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдореЗрдВ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдЖрдЗрдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ:


 namespace JetFinance.Strategies { public class WildStrategy : StrategyBase { private Random random = new Random(); public void PlayRussianRoulette() { if(DateTime.Now.Second == (random.Next() % 60)) { throw new StrategyException(); } } } public class StrategyException : Exception { /* .. */ } } namespace JetFinance.Investments { public class WildInvestment { WildStrategy _strategy; public WildInvestment(WildStrategy strategy) { _strategy = strategy; } public void DoSomethingWild() { ?try? { _strategy.PlayRussianRoulette(); } catch(StrategyException exception) { } } } } using JetFinance.Strategies; using JetFinance.Investments; void Main() { var foo = new WildStrategy(); var boo = new WildInvestment(foo); ?try? { boo.DoSomethingWild(); } catch(StrategyException exception) { } } 

рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХреМрди рд╕реА рд░рдгрдиреАрддрд┐ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реИ? рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХрд╛ рдХреНрд╖реЗрддреНрд░ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ WildInvestment рдХрд╛ рдХрд╛рд░реНрдп рдФрд░ рдирд┐рд░рдВрддрд░рддрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ WildInvestment рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ WildInvestment рдХреЗрд╡рд▓ рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдКрдкрд░реА рд╕реНрддрд░ рдкрд░ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╣рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ Main рд╡рд┐рдзрд┐ рдПрдХ рд╕реНрддрд░ рд╕реЗ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рддреА рд╣реИ, рдЬрдмрдХрд┐ рд╡рд┐рдзрд┐ рджреВрд╕рд░реЗ рд╕реЗ рдХреЙрд▓ рдХрд░рддреА рд╣реИред рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ? рдареАрдХ рд╣реИ, рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:


  • рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╣рдореЗрдВ рд╕реМрдВрдкреА рдЧрдИ рдереА;
  • рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдкрд╡рд╛рдж рдкрд╣рд▓реЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;
  • рд╣рдо рдирдИ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рдд рдХрд╣рдХрд░ рдЫреБрдЯрдХрд╛рд░рд╛ рджрд┐рд▓рд╛рдпрд╛ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдПрдХ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрдХ рдФрд░ рдирд┐рд╖реНрдХрд░реНрд╖ рд╣реИ: рд╣рдореЗрдВ DoSomethingWild рд╡рд┐рдзрд┐ рдореЗрдВ catch рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд╣реИ: WildInvestment рд╢рд╛рдпрдж рд╣реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдЧрд░ PlayRussianRoulette рдиреЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рддреЛ PlayRussianRoulette рднреА рдпрд╣реА рд╣реЛрдЧрд╛: рдЗрд╕рдореЗрдВ рд░рд┐рдЯрд░реНрди рдХреЛрдб рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд░реВрд▓реЗрдЯ рдЦреЗрд▓рдирд╛ рд╣реЛрдЧрд╛ред рддреЛ, рд╣рдо рдРрд╕реА рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЬрд╡рд╛рдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░рд▓ рд╣реИ: рдПрдХ рдФрд░ рд╕реНрддрд░ рдкрд░ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ DoSomethingWild рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЗрд╕ рд╕реНрддрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдореВрд▓ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ InnerException рдПрдХреНрд╕реЗрдкреНрд╢рди рдореЗрдВ рд▓рдкреЗрдЯреЗрдВ:


 namespace JetFinance.Strategies { pubilc class WildStrategy { private Random random = new Random(); public void PlayRussianRoulette() { if(DateTime.Now.Second == (random.Next() % 60)) { throw new StrategyException(); } } } public class StrategyException : Exception { /* .. */ } } namespace JetFinance.Investments { public class WildInvestment { WildStrategy _strategy; public WildInvestment(WildStrategy strategy) { _strategy = strategy; } public void DoSomethingWild() { try { _strategy.PlayRussianRoulette(); } catch(StrategyException exception) { throw new FailedInvestmentException("Oops", exception); } } } public class InvestmentException : Exception { /* .. */ } public class FailedInvestmentException : Exception { /* .. */ } } using JetFinance.Investments; void Main() { var foo = new WildStrategy(); var boo = new WildInvestment(foo); try { boo.DoSomethingWild(); } catch(FailedInvestmentException exception) { } } 

рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рд▓рдкреЗрдЯрдиреЗ рд╕реЗ рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЖрд╡реЗрджрди рдХреЗ рдПрдХ рд╕реНрддрд░ рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рдЕрдзрд┐рдХ рдЕрдиреБрдорд╛рдирд┐рдд рдмрдирд╛рддреЗ рд╣реИрдВ: Main рд╡рд┐рдзрд┐ред


рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рдореБрджреНрджреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ


рдЕрдХреНрд╕рд░ рд╣рдо рдПрдХ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЖрд▓рд╕реА рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЬрдм рд╣рдо рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЖрдзрд╛рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рд▓реЗрдХрд┐рди рдпрд╣ рдареАрдХ рдЗрди рдлреИрд╕рд▓реЛрдВ рд╣реИ рдЬреЛ рдЕрд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рдкреВрд░реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЖрдЗрдП рдХреБрдЫ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдФрд░ рдХреБрдЫ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓реЗрдВред


рдЕрдкрд╡рд╛рдж рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╕рдордп рд╣рдо рдПрдХ рдкрд╣рд▓реЗ рд╕реЗ рдмрдиреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдореЗрдВ рд╕рдорд╛рди рдЕрд░реНрде рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдореЗрдВ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЗрдХрд╛рдИ рдорд┐рд▓реА рдФрд░ рд╣рдореЗрдВ рдпрд╣ рдЗрдХрд╛рдИ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо InvalidArgumentException рдХреЛ рдлреЗрдВрдХ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдВрджреЗрд╢ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдпрд╣ рдкрд░рд┐рджреГрд╢реНрдп рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ InvalidArgumentException рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рдореВрд╣ рдореЗрдВ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдкрдХрдбрд╝рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдХреБрдЫ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рддреЛ InvalidDataException рдХрд╛ рдЪреБрдирд╛рд╡ рдЧрд▓рдд рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░рдХрд╛рд░ System.IO рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИ, рдЬреЛ рд╕рдВрднрд╡рддрдГ рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЖрдк рдирд┐рдкрдЯрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдореМрдЬреВрджрд╛ рдкреНрд░рдХрд╛рд░ рдХреА рдЦреЛрдЬ рдХрд░рдирд╛ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реЛрдЧрд╛ред рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╢реНрд░реЗрдгреА рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИрдВред рд╡рд╕реНрддреБрддрдГ рд╡реЗ рд╕рднреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЕрд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдЧрдВрднреАрд░ рдЙрд▓реНрд▓рдВрдШрди рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЕрдкрд╡рд╛рдж (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, System.IO.InvalidDataException ) рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ: рдПрдХ рддрд░рдл, рд╡рд╣ рджреЗрдЦреЗрдЧрд╛ рдХрд┐ рдЕрдкрд╡рд╛рдж System.IO рдирд╛рдорд╕реНрдерд╛рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЬрдмрдХрд┐ рджреВрд╕рд░реА рддрд░рдл рд╕реЗ рдЗрд╕реЗ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдирд╛рдорд╕реНрдерд╛рдиред рдпрджрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХрдиреЗ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ Referenceource.microsoft.com рдкрд░ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрди рд╕рднреА рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдЦреЛрдЬ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЗрд╕реЗ рдлреЗрдВрдХрд╛ рдЧрдпрд╛ рд╣реИ :


  • internal class System.IO.Compression.Inflater

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╣ рд╕рдордЭ рдЬрд╛рдПрдЧрд╛ рдХреЛрдИ рди рдХреЛрдИ рдЕрдВрдЧреВрдард╛ рд╣реИ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдкрд╡рд╛рдж рдиреЗ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рднреНрд░рдорд┐рдд рдХрд░ рджрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛, рд╕рдВрдкреАрдбрд╝рди рдХреЗ рд╕рд╛рде рд╕реМрджрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ред


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдЖрдк рдмрд╕ рдПрдХ рдЕрдкрд╡рд╛рдж рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ ErrorCode рдлрд╝реАрд▓реНрдб рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЖрдк рдмрд╕ рдПрдХ рд╣реА рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддреЗ рд╣реИрдВ, рдХреЛрдб рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдкрд╡рд╛рджреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ catch рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рдЖрд╡реЗрджрди рдХреА рд╕реНрдерд┐рд░рддрд╛ рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реБрдП, рдФрд░ рдХреБрдЫ рдирд╣реАрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдкрд░ рдлрд┐рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмреЗрд╢рдХ, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдПрдХ рддрд░рдл рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рджреВрд╕рд░реА рдУрд░, рдЖрдк рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдПрдХ рдЙрдкрд╕рдореВрд╣ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ArgumentException рдЬреЛ рд╡рд┐рд░рд╛рд╕рдд рджреНрд╡рд╛рд░рд╛ рдЕрдкрд╡рд╛рджреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдПрдХрдЬреБрдЯ рдХрд░рддреА рд╣реИред рдПрдХ рдФрд░ рдЧрдВрднреАрд░ рдиреБрдХрд╕рд╛рди рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдФрд░ рдЕрдкрдардиреАрдп рдХреЛрдб рд╣реИ рдЬреЛ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдЖрдзрд╛рд░рд┐рдд рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдШреЗрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░рдХрд╛рд░ рдкреЗрд╢ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рд╣реЛрдЧрд╛ рдЬрдм рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рдиреА рд╣реЛрдЧреАред


 public class ParserException { public ParserError ErrorCode { get; } public ParserException(ParserError errorCode) { ErrorCode = errorCode; } public override string Message { get { return Resources.GetResource($"{nameof(ParserException)}{Enum.GetName(typeof(ParserError), ErrorCode)}"); } } } public enum ParserError { MissingModifier, MissingBracket, // ... } // Usage throw new ParserException(ParserError.MissingModifier); 

рдкрд╛рд░реНрд╕рд░ рдХреЙрд▓ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦрдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╡рд┐рдлрд▓ рдХреНрдпреЛрдВ рд╣реБрдИ: рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рддреНрд░реБрдЯрд┐ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рд╡рд┐рдлрд▓рддрд╛ рдХрд╛ рдХрд╛рд░рдг рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рдореЗрд╢рд╛ рддреНрд░реБрдЯрд┐ рдХреЛрдб рд╕реЗ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Message рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╢рдмреНрджреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред


рдпрджрд┐ рд╣рдо рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдирд╣реАрдВ рдЪреБрдирддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╣рд░ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдкрд╡рд╛рдж рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдУрд░, рдпрд╣ рддрд░реНрдХрд╕рдВрдЧрдд рд▓рдЧрддрд╛ рд╣реИ: рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐ - рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдкрд╡рд╛рджред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдзрд┐рдХ рдордд рдХрд░реЛ: рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдкрд╡рд╛рдж рд╣реЛрдиреЗ рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдкрдХрдбрд╝рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рд╣реЛ рдЬрд╛рдПрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдХреЙрд▓рд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХрд╛ рдХреЛрдб catch рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдУрд╡рд░рд▓реЛрдб рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЗрд╕реЗ рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдПрдХ рдФрд░ рдиреБрдХрд╕рд╛рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЗрди рдЕрдкрд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ: рдЙрдирдХреЗ рдкрд╛рд╕ рдХрдИ рдЪреАрдЬреЗрдВ рдЖрдо рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рд╕реЗ рдкрдХрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред


рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рдирджрд╛рд░ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рддреНрд░реБрдЯрд┐ рдкреВрд░реА рдЗрдХрд╛рдИ рдХреЛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИред рдлрд┐рд░ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдРрд╕реА рдЬрдЧрд╣ рд▓реЗрдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреЛрдИ рднреА рдЗрд╕реЗ рдХрднреА рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдХреЗ рд╕рд╛рде рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╕реЛрдЪреЗрдЧрд╛: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рд░рд╛рд╕рдд рдХреА рдПрдХ рдЕрд▓рдЧ рд╢рд╛рдЦрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рдЗрди рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕реЗрдЯ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ: рдЖрдк рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрдореВрд░реНрдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд░рд┐рдЪрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЛрдВ рдХрд╛ рд╡рд╛рд░рд┐рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдзрд╛рд░ рд╡рд░реНрдЧ (рд╣рдорд╛рд░реЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░) рдХреЛ рдПрдХ рдЕрдореВрд░реНрдд рд╕рдВрдкрддреНрддрд┐ рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЛрдб рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЗрдирд╣реЗрд░рд┐рдЯрд░реНрд╕ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдХреЗ рдЗрд╕ рдХреЛрдб рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВрдЧреЗред


 public abstract class ParserException { public abstract ParserError ErrorCode { get; } public override string Message { get { return Resources.GetResource($"{nameof(ParserException)}{Enum.GetName(typeof(ParserError), ErrorCode)}"); } } } public enum ParserError { MissingModifier, MissingBracket } public class MissingModifierParserException : ParserException { public override ParserError ErrorCode { get; } => ParserError.MissingModifier; } public class MissingBracketParserException : ParserException { public override ParserError ErrorCode { get; } => ParserError.MissingBracket; } // Usage throw new MissingModifierParserException(ParserError.MissingModifier); 

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдореЗрдВ рдХреБрдЫ рдЕрджреНрднреБрдд рдЧреБрдг рдорд┐рд▓рддреЗ рд╣реИрдВ:


  • рдПрдХ рдУрд░, рд╣рдо рдПрдХ рдЖрдзрд╛рд░ (рд╕рд╛рдорд╛рдиреНрдп) рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝рддреЗ рд░рд╣рддреЗ рд╣реИрдВ;
  • рджреВрд╕рд░реА рдУрд░, рдЗрд╕ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдкрд░ рднреА рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ;
  • рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдлреНрд▓реИрдЯ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред


рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдореВрд╣ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ


рдкрд┐рдЫрд▓реЗ рддрд░реНрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣рдо рдХреНрдпрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ? рдЖрдЗрдП рдЙрдиреНрд╣реЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рддрдп рдХрд░реЗрдВ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ? рдЖрдорддреМрд░ рдкрд░, рд╣рдо рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ рд░рд╛рдЬреНрдп рдХреЗ рд╕рд╛рде рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдЗрди рд╕рдВрд╕реНрдерд╛рдУрдВ рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдкрд╣рд▓реЗ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдХреБрдЫ рдЗрдХрд╛рдИ рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЕрдЧрд▓рд╛, рдЕрдЧрд░ рд╣рдо рдмрд╛рд╣рд░ рд╕реЗ рдПрдХ рд╡рд╕реНрддреБ рдЧреНрд░рд╛рдл рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рдореВрд╣реЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдкрд╣рд▓рд╛ рд╕рдореВрд╣ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреАрд╕рд░рд╛ рдЧрдгрд┐рддреАрдп рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдкрд░рддреЗрдВ рдЗрди рд╕рднреА рд╕рдореВрд╣реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рдЬреИрд╕реЗ рдЖрдВрддрд░рд┐рдХ рд░рд╛рдЬреНрдпреЛрдВ рдХреА рдкрд░рддреЗрдВ рд▓реЙрдЧрд┐рдВрдЧ, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд▓реЙрдЧрд┐рдВрдЧ рдФрд░ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ред рдкрд░рддреЗрдВ рдХрдИ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рдореВрд╣реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдореЙрдбрд▓ рдХреА рдПрдХ рдкрд░рдд, рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреА рдПрдХ рдкрд░рдд рдФрд░ рдПрдХ рдкреНрд░рд╕реНрддреБрддрд┐ рдкрд░рдд рд╣реЛ рд╕рдХрддреА рд╣реИред рдпреЗ рд╕рдореВрд╣ рдПрдХ рдЕрд╕реЗрдВрдмрд▓реА рдпрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣ рдЕрдкрдиреА рдЕрд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред


рддреЛ, рд╣рдо рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рд╕рдореВрд╣ рдпрд╛ рдкрд░рдд рдХреЗ рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмреАрдЪ рдЖрд╕рд╛рдиреА рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрдХрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред


рдЖрдЗрдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ:


 namespace JetFinance { namespace FinancialPipe { namespace Services { namespace XmlParserService { } namespace JsonCompilerService { } namespace TransactionalPostman { } } } namespace Accounting { /* ... */ } } 

рдРрд╕рд╛ рдХреНрдпрд╛ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд╛рдо рд╕реНрдерд╛рди рд╡реНрдпрд╡рд╣рд╛рд░рд┐рдХ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕рдореВрд╣реАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ: рдЬреЛ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рд╕рдореВрд╣реЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЕрдкрд╡рд╛рдж рд╕рд╣рд┐рдд рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рдЖрдк рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЕрдкрд╡рд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╛рдо рджреЗрдЦреЗрдВрдЧреЗ рдФрд░ рдЗрд╕рдХреЗ рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЗрд╕рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реИ рдХрд┐ InvalidDataException рдХреЗ рдЦрд░рд╛рдм рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ System.IO рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдирд╛рдорд╕реНрдерд╛рди рд╕реЗ рддрд╛рддреНрдкрд░реНрдп рд╣реИ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЛ рдЙрди рдХрдХреНрд╖рд╛рдУрдВ рд╕реЗ рдлреЗрдВрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ System.IO рдирд╛рдорд╕реНрдерд╛рди рдпрд╛ рдЕрдзрд┐рдХ рдиреЗрд╕реНрдЯреЗрдб рдореЗрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╕реНрдерд╛рди рд╕реЗ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ рдЙрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд░рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рдЗрди рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╕рдорд╛рди рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдлреЗрдВрдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕реБрд╕рдВрдЧрдд рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╕рд╛рди рдмрдирд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХреНрдпрд╛ рд╣реЛрддреЗ рд╣реИрдВ рдЙрд╕рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЛ рд╕рдордЭреЗрдВред


рдХреЛрдб рдХреЗ рд╕реНрддрд░ рдкрд░ рд╕рдореВрд╣ рдмрдирд╛рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ? рд╡рд┐рд░рд╛рд╕рдд:


 public abstract class LoggerExceptionBase : Exception { protected LoggerException(..); } public class IOLoggerException : LoggerExceptionBase { internal IOLoggerException(..); } public class ConfigLoggerException : LoggerExceptionBase { internal ConfigLoggerException(..); } 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рд╡реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рдбреЗрдЯрд╛ рдФрд░ рд╕рдореВрд╣ рдкреНрд░рдХрд╛рд░ рджреЛрдиреЛрдВ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдПрдХрд▓ рд╕рдореВрд╣ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рдФрд░ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдореВрд╣реАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдХреНрдпреЛрдВрдХрд┐ рдЕрдкрд╡рд╛рдж рдХрд╛ рд╕рд╛рд░ рдПрдХ рдЗрдХрд╛рдИ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред


рдЗрди рджреЛ рд╕рдореВрд╣реАрдХрд░рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдХрд░ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ:


  • Assembly рдЕрдВрджрд░ рдПрдХ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдкрд╡рд╛рдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЗрд╕ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдкрд╡рд╛рдж рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рдореВрд▓ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЧреНрд░реБрдкрд┐рдВрдЧ рдХреА рдкрд╣рд▓реА рдкрд░рдд рд╣реЛрдЧреАред
  • рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдпрд╛ рдХрдИ рдирд╛рдо рд╕реНрдерд╛рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд╕рдореВрд╣реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рдпреЗ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд╕реНрдерд╛рдУрдВ, рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо, рдЖрджрд┐ рдХреЗ рдХреНрд╖реЗрддреНрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдЗрди рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХрд╛ рдЕрд░реНрде рд╣реИ рдЙрдирдХреЗ рдХрд╛рд░реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдореВрд╣реАрдХрд░рдг рдкреНрд░рдХрд╛рд░ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡реЗ рдПрдХ рд╣реА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рднреАрддрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ;
  • рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдПрдХ рд╣реА рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрдВрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдордЭреЗрдЧрд╛ рдФрд░ рдЧрд▓рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдирд╣реАрдВ рдкрдХрдбрд╝реЗрдЧрд╛ред рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ global::Finiki.Logistics.OhMyException рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЬреАрдм рд╣реЛрдЧрд╛ global::Finiki.Logistics.OhMyException by catch(global::Legacy.LoggerExeption exception) , рдЬрдмрдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдмрд┐рд▓реНрдХреБрд▓ рдЙрдкрдпреБрдХреНрдд рд▓рдЧрддрд╛ рд╣реИ:

 namespace JetFinance.FinancialPipe { namespace Services.XmlParserService { public class XmlParserServiceException : FinancialPipeExceptionBase { // .. } public class Parser { public void Parse(string input) { // .. } } } public abstract class FinancialPipeExceptionBase : Exception { } } using JetFinance.FinancialPipe; using JetFinance.FinancialPipe.Services.XmlParserService; var parser = new Parser(); try { parser.Parse(); } catch (XmlParserServiceException exception) { // Something is wrong in the parser } catch (FinancialPipeExceptionBase exception) { // Something else is wrong. Looks critical because we don't know the real reason } 

рдпрд╣рд╛рдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд┐рдзрд┐ рдХрд╣рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ, рдХреБрдЫ рд╕реНрдерд┐рддрд┐ рдореЗрдВ XmlParserServiceException рдХреЛ рдлреЗрдВрдХ рд╕рдХрддрд╛ рд╣реИред рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ, рдпрд╣ рдЕрдкрд╡рд╛рдж рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдирд╛рдорд╕реНрдерд╛рди JetFinance.FinancialPipe.FinancialPipeExceptionBase , рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреБрдЫ рдЕрдиреНрдп рдЕрдкрд╡рд╛рдж рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ - рдЗрд╕ рд╕рдордп XmlParserService рдХреЗрд╡рд▓ рдПрдХ рдЕрдкрд╡рд╛рдж рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдЕрдкрд╡рд╛рдж рднрд╡рд┐рд╖реНрдп рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдореНрдореЗрд▓рди рд╣реИ, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдирдП рдЕрдкрд╡рд╛рдж рдХреЛ рдХрд┐рд╕ рдЗрдХрд╛рдИ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдПрдХ catch рд╡рд╛рд▓рд╛ catch рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред


рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХреИрд╕реЗ рдХрд░реЗрдВ?


  • рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдХ рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪрд▓реЛ рдЗрд╕реЗ рдПрдХ рдбреЛрдореЗрди рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХрд╣рддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдбреЛрдореЗрди рдПрдХ рд╢рдмреНрдж рд╣реИ рдЬреЛ рдХрдИ рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдВрдпреЛрдЬрди рдХрд░рддрд╛ рд╣реИ: рд▓реЙрдЧрд┐рдВрдЧ, рд╡реНрдпрд╛рдкрд╛рд░-рддрд░реНрдХ, рдпреВрдЖрдИред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреНрд╖реЗрддреНрд░ рдЬреЛ рдпрдерд╛рд╕рдВрднрд╡ рдмрдбрд╝реЗ рд╣реИрдВред
  • рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдкреЗрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рдкрдХрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: рд╕рднреА рдЕрдкрд╡рд╛рдж рдЬрд┐рдиреНрд╣реЗрдВ catch рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрдХрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдЬрд╛рдПрдЧрд╛;
  • рдШрд╛рддрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдПрдХ рдбреЛрдореЗрди рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рд╕реЗ рд╕реАрдзреЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕реНрддрд░ рдкрд░ рдкрдХрдбрд╝реЗ рдЧрдП рд▓реЛрдЧреЛрдВ рд╕реЗ рдЕрд▓рдЧ рдХрд░ рджреЗрдВрдЧреЗ;
    - рдбреЛрдореЗрди рдХреЛ рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдлреЗрдВрдХреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВред рдпрд╣рд╛рдВ рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ: рдпрджрд┐ рдХрд┐рд╕реА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдЙрдЪреНрдЪ рд╕реНрдерд╛рди рдХрд╛ рдирд╛рдорд╕реНрдерд╛рди рдШреЛрдВрд╕рд▓рд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдореЗрдВ рдПрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдФрд░ рдПрдХ рдЕрдиреНрдп рдирд╛рдорд╕реНрдерд╛рди рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╕реНрддрд░ рдкрд░ рд╢рд╛рдЦрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рджреЛ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ;
  • рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреНрд╖реЗрддреНрд░реЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рд╡рд┐рд╢реЗрд╖ рдЕрдкрд╡рд╛рдж рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ
  • рдпрджрд┐ рд╡рд┐рд╢реЗрд╖ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рдореВрд╣ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рдФрд░ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ: рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ;
  • рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдореВрд╣ рдХреЛ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЕрдзрд┐рдХ рдмрд╛рд░ рдкрдХрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рддреЛ ErrorCode рдХреЗ рд╕рд╛рде рдорд┐рд╢реНрд░рд┐рдд рдореЛрдб рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдВред

рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░


рдПрдХ рд╕рдореВрд╣ рдореЗрдВ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕реНрд░реЛрдд рдПрдХ рдФрд░ рдЖрдзрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдПрдХ рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рдореНрди рдЪреАрдЬрд╝реЗрдВ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╕рдореВрд╣ рдмрдирд╛ рд╕рдХрддреА рд╣реИрдВ:


  • рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдХреЙрд▓ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдбреЗрдЯрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореВрд▓ рддреНрд░реБрдЯрд┐ рдХреЛрдб) рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╕рдордп рдХрд┐рд╕реА рдЕрдкрд╡рд╛рдж рдпрд╛ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдкрд╡рд╛рдж рдореЗрдВ рд▓рдкреЗрдЯрдХрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ;
  • рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рджреНрд╡рд╛рд░рд╛ рдХреЛрдб рдХреА рдПрдХ рдХреЙрд▓, рдЬрд┐рд╕рдиреЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╣рдорд╛рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдкрдХрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХреЗ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдкрд░реЗ рд╣реИрдВред рдЗрд╕ рд╕рдореВрд╣ рдореЗрдВ рдЙрди рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рддрд░реАрдХреЛрдВ рд╕реЗ рдЕрдкрд╡рд╛рдж рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рдореМрдЬреВрджрд╛ рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рд╕реЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд┐рдзрд┐ рдиреЗ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХрд╣рд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдХреА рдПрдХ рд╡рд┐рдзрд┐ рдиреЗ рджреВрд╕рд░реА рдХрдХреНрд╖рд╛ рдХреА рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрджрд┐ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕реНрд░реЛрдд рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ InnerExcepton рдореЗрдВ рдореВрд▓ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдЕрдкрд╡рд╛рдж рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдЧрд░ рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдПрдХ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдХрд╛рд░рдг рд╣реБрдИ рд╣реИ рддреЛ рд╣рдо рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджреЗрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдкрд░реЗ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рдореВрд╣ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ;
  • рд╣рдорд╛рд░рд╛ рдЕрдкрдирд╛ рдХреЛрдб рдЬреЛ рдЧрд▓рддреА рд╕реЗ рдЕрд╕рдВрдЧрдд рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рдерд╛ред рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рдкрд╛рда рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╣реИ - рдХреЛрдИ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ, unsafe рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХреЛрдИ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИред

рдпрд╣ рдЕрдзреНрдпрд╛рдп рд░реВрд╕реА рд╕реЗ рд╕рдВрдпреБрдХреНрдд рд░реВрдк рд╕реЗ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рдФрд░ рдкреЗрд╢реЗрд╡рд░ рдЕрдиреБрд╡рд╛рджрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдЖрдк рд░реВрд╕реА рдпрд╛ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЦреНрдпрддрдГ рдЪреАрдиреА рдпрд╛ рдЬрд░реНрдорди рдореЗрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рдЖрдк рд╣рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдЧрд┐рддреБрдм рдкрд░ рдПрдХ рд╕реНрдЯрд╛рд░ рджреЗрдирд╛ рд╣реИ рдпрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдлреЛрд░реНрдХ рдХрд░рдирд╛ рд╣реИ github / sidristij / dotnetbook ред

Source: https://habr.com/ru/post/hi454882/


All Articles