www.wikidata.uk-ua.nina.az
Garantiyi bezpeki viklyuchnih situacij vinyatok kalka z rosijskoyi ne rekomendovanij do vzhivannya ce nabir dogovirnih principiv programuvannya dlya realizaciyi kliyentskih bibliotek yaki buli sformulovani Devidom Abrahamsom en 1 2 stosovno mirkuvan pro bezpeku obrobki viklyuchnih situacij v movah programuvannya yaki vikoristovuyut mehanizm viklyuchnih situacij zokrema C Zazvichaj bezpeka viklyuchnih situacij biblioteki chi komponentu oznachaye sho vin matime adekvatnu povedinku koli traplyayetsya viklyuchna situaciya pid chas vikonannya Dlya bilshosti lyudej adekvatna povedinka polyagatime v tomu sho dlya vsih ochikuvanih situacij obrobki viklyuchnih situacij ne maye vidbuvatisya vitoku resursiv i programa maye zalishatisya v chitko viznachenomu stani tak sho yiyi vikonannya mozhe prodovzhuvatis dali Dlya bilshosti komponentiv takozh ochikuyetsya sho v rezultati viniknennya pomilki pro neyi bude povidomleno kliyentu Zmist 1 Rivni bezpeki 2 Tehniki vikonannya bezpeki viklyuchnih situacij 3 Mifi i zaboboni 4 Primitki 5 LiteraturaRivni bezpeki red Isnuye dekilka rivniv bezpeki viklyuchnih situacij v nespadnomu poryadku bezpechnosti 3 Garantiya vidsutnosti viklyuchnih situacij abo prozorist nepoladok Garantovano sho operaciyi zavershuyutsya vdalo i zadovilnyayut vsi vimogi navit pid chas viklyuchnih situacij Yaksho vinikayut viklyuchni situaciyi voni budut obroblyatis vseredini i ne budut vidni kliyentam Posilena bezpeka abo semantika komitiv abo vidkativ Operaciyi mozhut zaznati nevdachi ale nevdali operaciyi ne mayut zavdavati shkodi tak sho vsi dani zberezhut svoyi pervinni znachennya 4 Bazova abo z garantiyeyu vidsutnosti vitokiv Chastkove vikonannya abo nevdali operaciyi mozhut mati pobichni efekti ale vsi invarianti zberigayutsya i nemaye vitokiv resursiv Bud yaki zberezheni dani budut mati pravilni znachennya navit yaksho voni vidriznyatimutsya vid tih sho buli pered viniknennyam viklyuchnoyi situaciyi Vidsutnist bezpeki viklyuchnih situacij Nemaye niyakih garantij Zazvichaj na bazovomu rivni bezpeki viklyuchnih situacij neobhidno pisati nadijnij kod Bilsh visoki rivni bezpeki inodi mozhe buti vazhko dosyagti i mozhut buti zatratnimi za rahunok dodatkovogo kopiyuvannya Tehniki vikonannya bezpeki viklyuchnih situacij red Osnovnimi zasobami movi programuvannya dlya napisannya bezpechnogo kodu ye blok try i pidtrimka tehniki proektuvannya Resource Acquisition Is Initialization Otrimannya resursu ye inicializaciya Osnovnoyu ideyeyu tehniki shablonu proektuvannya Resource Acquisition Is Initialization RAII ye te sho volodinnya resursom viddayetsya ob yektu z obmezhenoyu oblastyu vidimosti Zazvichaj takij ob yekt stvoryuye vidkrivaye vidilyaye pam yat i tak dali resurs v svoyemu konstruktori Takim chinom destruktor ob yekta mozhe zvilniti resurs v kinci svogo zhittya nezalezhno vid togo sho prizvelo do zakinchennya jogo zhittyevogo ciklu vihid za mezhi vidimosti chi viklyuchna situaciya 5 Mifi i zaboboni red Vzayemodiya mizh shablonami i viklyuchnimi situaciyami exceptions pogano zrozumila Cej mif legko sprostovuyetsya tim sho niyakoyi vzayemodiyi ne isnuye Shablon pislya stvorennya jogo ekzemplyaru v usih vidnosinah pracyuye yak zvichajnij klas chi funkciya Dlya togo shob peredbachiti povedinku shablona pri viklyuchnih situaciyah slid dumati pro nogo yak pro konkretnij ekzemplyar yakij danij shablon realizuye Vreshti resht uzagalnenist shabloniv ne maye viklikati osoblivih zanepokoyen Hocha kliyentska chastina programi postavlyaye komponentu chastinu realizaciyi yaka mozhe yaksho ne propisana insha povedinka generuvati dovilni viklyuchni situaciyi te zh same vinikaye i pri vikoristanni virtualnih funkcij abo prosto roboti iz vkazivnikami na funkciyi Nemozhlivo napisati bezpechnij uzagalnenij kontejner Ce tverdzhennya chasto vinikaye z posilannyam na stattyu Toma Kargila Tom Cargill 6 v yakij vin doslidzhuye problemu bezpeki viklyuchnih situacij dlya uzagalnenih stekovih shabloniv V svoyij statti vin pidijmaye bagato korisnih pitan ale na zhal ne mozhe dati virishennya jogo problemi Tomu vin robit pripushennya sho rishennya ne isnuye Ale pisnya publikaciyi statti posliduvalo bagato prikladiv bezpechnih uzagalnenih komponentiv sered yakih kontejneri standartnoyi biblioteki C Nayavnist kodu z generuvannyam i obrobkoyu viklyuchnih situacij spovilnyuye programu a shabloni vikoristovuyutsya specialno dlya otrimannya najkrashoyi mozhlivoyi produktivnosti Horosha realizaciya C ne prizvede do zhodnogo ciklu komand dlya obrobki viklyuchnih situacij do momentu yih generuvannya a pri obrobci shvidkist vikonannya kodu bude porivnyana z viklikom funkciyi Programa yaka mistit kod obrobki viklyuchnih situacij bude mati taku samu shvidkodiyu yak i programa yaka ignoruye mozhlivist viniknennya pomilok Vikoristannya viklyuchnih situacij exceptions mozhe privesti do priskorennya programi v porivnyanni z tradicijnim sposobom obrobki pomilok z ryadu prichin Po pershe blok catch yavno vkazuye kompilyatoru yakij kod vidnositsya do situacij obrobki pomilok i vin mozhe vinositis okremo iz zvichajnogo hodu vikonannya programi pidvishuyuchi kompaktnist posilan Po druge kod iz tradicijnim sposobom obrobki pomilok maye zazvichaj maye povertati kodi pomilok a kod yakij yih viklikaye povinen postijno yih pereviryati pislya kozhnogo vikliku takoyi funkciyi vikoristannya viklyuchen povnistyu pozbavlyaye vid cih nakladnih vitrat Viklyuchennya uskladnyuyut rozuminnya povedinki programi Zazvichaj ce privodyat na pidtrimku mifu pro prihovani shlyahi vikonannya programi yaki vidbuvayetsya pid chas znishennya steku stack unwinding Prihovani shlyahi vikonannya programi ne nove ponyattya dlya programista C yakij zavzhdi ochikuye sho lokalni avtomatichni zminni pidlyagayut znishennyu pislya vihodu iz funkciyi ErrorCode f int amp result 1 2 X x 3 ErrorCode err x g result 4 if err kNoError 5 return err 6 Bud yakij inshij kod sliduye tut return kNoError 7 U prikladi navedenomu vishe vidbuvayetsya prihovanij viklik destruktoru X X u 6 ij i 7 ij strochci kodu Zavdyaki vikoristannyu viklyuchen nemaye yavnogo kodu yakij prisvyachenij obrobci pomilki int f 1 2 X x 3 int result x g 4 Bud yakij inshij kod sliduye tut return result 5 Dlya bilshosti programistiv yaki znajomi z mehanizmom obrobki viklyuchnih situacij drugij priklad naspravdi ye bilsh chitabelnim i zrozumilim nizh pershij Prihovani shlyahi vikonannya kodu mayut ti sami vikliki destruktoriv lokalnih zminnih Krim togo voni sliduyut tomu samomu metodu yakij pracyuye tak samo nibi tam bi buli potencijni komandi vihodu return pislya vikliku kozhnoyi funkciyi yaki generuyut viklyuchni situaciyi Chitabelnist takogo kodu krasha oskilki kod vikonannya logiki programi ne zmishuyetsya z kodom obrobki pomilok a funkciya mozhe vikoristovuvati mozhlivist povernennya znachen prirodnim chinom na svij rozsud Primitki red Exception Safety in Generic Components Arhiv originalu za 18 bereznya 2015 Procitovano 29 serpnya 2008 Abrahams D Exception Safety in Generic Components Lect Notes Comput Sci G Goos J Hartmanis J v Leeuwen Berlin Heidelberg New York NY London etc Springer 2000 P 69 79 11 p ISSN 0302 9743 1611 3349 doi 10 1007 3 540 39953 4 6 d Track Q924044d Track Q29394459d Track Q1511639d Track Q1812791 Bjarne Stroustrup Appendix E Standard Library Exception Safety in The C Programming Language 3rd Edition Addison Wesley ISBN 0 201 88954 4 Arhiv originalu za 21 bereznya 2015 Procitovano 19 bereznya 2015 Arhivovana kopiya Arhiv originalu za 3 lyutogo 2009 Procitovano 19 bereznya 2015 Exception Safety Concepts and Techniques Arhivovano 5 bereznya 2015 u Wayback Machine Bjarne Stroustrup AT amp T Labs Research Florham Park NJ 07932 USA Exception Handling A False Sense of Security Arhivovano 8 chervnya 2007 u Wayback Machine Tom Cargill C Report Nov Dec 1994Literatura red Herb Sutter Exceptional C 47 Engineering Puzzles Programming Problems and Solutions 2000 Jon Kalb Exception Safe Coding in C Arhivovano 20 bereznya 2015 u Wayback Machine with C Now 2012 presentations on exception safety Related discussion on Stackoverflow C do you really write exception safe code Arhivovano 20 bereznya 2015 u Wayback Machine nbsp Ce nezavershena stattya pro programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Cyu stattyu treba vikifikuvati dlya vidpovidnosti standartam yakosti Vikipediyi Bud laska dopomozhit dodavannyam dorechnih vnutrishnih posilan abo vdoskonalennyam rozmitki statti gruden 2016 Otrimano z https uk wikipedia org w index php title Bezpeka vinyatkovih situacij amp oldid 37687029