рдХрдо рд╕реЗ рдХрдо рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдПрд╕реНрдЯрд░ () рдореИрдХреНрд░реЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди

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

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд░реНрдгрди


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

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

рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдореБрдЦрд░ () c / c ++ рдХреЛ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдЬреЛ рдорд╛рдирдХ рдореБрдЦрд░ () рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ - рд▓реЗрдХрд┐рди рдиреНрдпреВрдирддрдо рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЛ рдЬреЛрдбрд╝рдХрд░ред рдРрд╕реЗ рдореИрдХреНрд░реЛрдВ рдХреЛ рд░рд╣рдиреЗ рджреЛред

VERIFY_EXIT (рд╕реНрдерд┐рддрд┐);
VERIFY_RETURN (рд╕реНрдерд┐рддрд┐, рд░рд┐рдЯрд░реНрдирд╡реИрд▓реНрдпреВ);
VERIFY_THROW (рд╕реНрдерд┐рддрд┐, рдЕрдкрд╡рд╛рдж);
VERIFY_DO (рд╕реНрдерд┐рддрд┐) {/ * рдЕрд╕рдлрд▓ рдмреНрд▓реЙрдХ * /};

(рдЗрди рдореИрдХреНрд░реЛрдЬрд╝ рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рднреА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, VERIFY_OR_EXIT (), VERIFY_OR_RETURN (), VERIFY_OR_THROW (), VERIFY_OR_THROW ()ред рдпрд╛ рдЫреЛрдЯреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред)

рдпреЗ рдореИрдХреНрд░реЛрдЬрд╝, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рдВрдХрд▓рди рдХреЗ рдбрд┐рдмрдЧ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд░рд┐рд▓реАрдЬ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╛рдиреА рди рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рдмрд▓реНрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░реЗрдВред

рдореИрдХреНрд░реЛ рд╡рд┐рд╡рд░рдг


(рдореИрдХреНрд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдЕрдиреБрдорд╛рдирд┐рдд рд╣реИ, рдЙрдирдХрд╛ рдЕрдиреНрдп рдбрд┐рдЬрд╝рд╛рдЗрди рднреА рд╕рдВрднрд╡ рд╣реИред)

1) VERIFY_EXIT (рд╕реНрдерд┐рддрд┐);

рдпрд╣ рд╕реНрдерд┐рддрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдпрд╣ рдЧрд▓рдд рд╣реИ, рддреЛ рдпрд╣ рдорд╛рдирдХ рдореБрдЦрд░ () (рдбрд┐рдмрдЧ рд╕рдВрд╕реНрдХрд░рдг) рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡рд░реНрддрдорд╛рди рдлрд╝рдВрдХреНрд╢рди (рдбрд┐рдмрдЧ рдФрд░ рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг) рдХреЛ рднреА рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред

2) VERIFY_RETURN (рд╕реНрдерд┐рддрд┐, рд░рд┐рдЯрд░реНрдирд╡реИрд▓реНрдпреВ);

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

3) VERIFY_THROW (рд╕реНрдерд┐рддрд┐, рдЕрдкрд╡рд╛рдж);

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

4) VERIFY_DO (рд╕реНрдерд┐рддрд┐) {/ * рдЕрд╕рдлрд▓ рдмреНрд▓реЙрдХ * /};

рд╕реНрдерд┐рддрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдпрд╣ рдЧрд▓рдд рд╣реИ, рддреЛ рдпрд╣ рдорд╛рдирдХ рдореБрдЦрд░ () (рдбрд┐рдмрдЧ рд╕рдВрд╕реНрдХрд░рдг) рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореИрдХреНрд░реЛ (рдбреАрдмрдЧ рдФрд░ рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг) рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╡рд┐рдлрд▓ рдмреНрд▓реЙрдХ рдпрд╛ рдСрдкрд░реЗрд╢рди рднреА рдХрд░рддрд╛ рд╣реИред

рд╕рднреА рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ:

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

рдореИрдХреНрд░реЛ рдпреВрдЬ рдкреИрдЯрд░реНрди


рдмреЗрд╢рдХ, рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдПрдВрдЯреНрд░реЛрдкреА рд╕реБрдкрд░рдореЗрди (рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рдирд╛рдпрдХ) рдЗрди рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

1) рдкреВрд░реНрд╡ рдФрд░ рдмрд╛рдж рдХреА рд╕реНрдерд┐рддрд┐ред

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

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдзрд╛ рд╣реИ - рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЪреЗрдХ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдореИрдХреНрд░реЛ рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдореИрдХреНрд░реЛ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдХрд┐рд╕ рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред (VERIFY_EXIT () - рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг, VERIFY_RETURN () - рдПрдХ рдореВрд▓реНрдп рдХреА рд╡рд╛рдкрд╕реА рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг, VERRIFY_THROW () - рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг, рдЖрджрд┐ред

рдЖрдк VERIFY () рдореИрдХреНрд░реЛ рдХреЛ рднреА рдЬреЛрдбрд╝ рдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐рд╕реА рднреА рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреЛрд╕реНрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВред

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

2) рд▓реЗрди-рджреЗрди рдХрд╛ рд╢рдмреНрджрд╛рд░реНрдеред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрди рдореИрдХреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓реЗрдирджреЗрди рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдХреЛ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ: 1) рддреИрдпрд╛рд░реА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рд╛рде рдПрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдХреНрд░рдорд┐рдХ рддреИрдпрд╛рд░реА; 2) рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗрд╡рд▓ рдЕрдЧрд░ рддреИрдпрд╛рд░реА рдХреЗ рд╕рднреА рдЪрд░рдгреЛрдВ рд╕рдлрд▓ рд░рд╣реЗ рдереЗ; 3) рдкреВрд░рд╛ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░, рдЕрдЧрд░ рддреИрдпрд╛рд░реА рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ (рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд░реЛрд▓рдмреИрдХ рдХреЗ рд╕рд╛рде)ред

3) рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХреЛрдб рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рдирд╛ред

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

рдореИрдХреНрд░реЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


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

рдореИрдХреНрд░реЛрдВ рдХреЛ рдПрдХ рдХрдерди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдпреЛрдЧреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдирд┐рд░реНрдорд╛рдг (рдпрд╛ рдЗрд╕реА рддрд░рд╣) рдХрд░рддреЗ рд╕рдордп {} рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:

#define VERFY_EXIT(cond) \ do{bool _= (bool)(cond); assert(_); if(!_) {return;}} while(false) \ /*end macro VERIFY_EXIT()*/ 

рдлрд┐рд░ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

 if(a > 0) VERIFY_EXIT(a%2==0); 

рдмреЗрд╢рдХ, рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд╣реИред рдЖрдк рдореИрдХреНрд░реЛрдЬрд╝ рдХреЛ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкреБрдирд╢реНрдЪ рд╕рдлрд▓ рдПрдВрдЯреНрд░реЛрдкреА, рд╕реБрдкрд░рдореИрди рдХреЗ рд╕рд╛рде рд╕рдлрд▓ рд▓рдбрд╝рд╛рдИ!

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


All Articles