C # - Excepții referitoare la consumul de mâncare - Depășirea stivei

Analizez din când în când un fișier care are date MalFormed.

depășirea

și aruncă o excepție,

Aș dori să mă recuperez de la excepție și să ignor datele greșite formatate.

Care este cel mai bun mod de a face acest lucru?

* EDIT: * Cred că întrebarea mea nu a fost înțeleasă bine. Aș dori să mă recuperez de la excepție, orice excepție, nu vreau ca programul meu să se oprească. dar să continui.

8 Răspunsuri 8

Cred că ceea ce întrebi este următorul:

Când analizați un fișier linie cu linie, uneori linia curentă are date greșite, ceea ce face ca o excepție să fie aruncată în codul dvs. Poate că trebuie pur și simplu să vă structurați codul astfel încât try/catch să înconjoare doar codul de analiză, nu codul de citire a liniei. De exemplu:

Blocul exterior try/catch este acela de a gestiona închiderea corectă a obiectului cititor dacă s-a întâmplat ceva când ați încercat să deschideți sau să citiți fișierul. Blocul de încercare/captură internă este de a înghiți excepțiile ridicate dacă datele citite au fost malformate și nu au putut fi analizate corect.

Totuși, sunt de acord cu aproape toți ceilalți. Înghițirea excepției ar putea să nu fie bună. Cel puțin, vă recomand să o conectați undeva.

Pe scurt, probabil că nu ar trebui să folosiți excepții pentru acest lucru. Ceva ca un TryParse care returnează fals este mult mai eficient și mai ușor de recuperat. Manevrarea excepțiilor este o abordare puțin obișnuită.

În general, ceva de genul acesta:

Ar trebui să evitați prinderea cazului general de excepție și, în schimb, să prindeți o excepție specifică, oricare ar fi aceasta.