Acasă Finanțe personale Manipularea erorilor în C ++ la deschiderea unui fișier - dummies

Manipularea erorilor în C ++ la deschiderea unui fișier - dummies

Video: Linux Tutorial for Beginners: Introduction to Linux Operating System 2024

Video: Linux Tutorial for Beginners: Introduction to Linux Operating System 2024
Anonim

Când deschideți un fișier, tot felul de lucruri pot merge prost. Un fișier trăiește pe un dispozitiv fizic - un disc fix, de exemplu, sau poate pe o unitate flash sau o cartelă SD - și puteți întâmpina probleme când lucrați cu dispozitive fizice.

De exemplu, o parte din disc ar putea fi deteriorată, cauzând coruperea unui fișier existent. Sau, mai puțin dezastruos, s-ar putea să nu mai aveți spațiu pe disc. Sau chiar mai puțin dezastruos, puteți încerca să deschideți un fișier într-un director care nu există.

Dacă încercați să deschideți un fișier pentru scriere specificând o cale completă și un nume de fișier, dar directorul nu există, calculatorul răspunde diferit, în funcție de sistemul de operare pe care îl utilizați. Dacă nu sunteți sigur ce va răspunde sistemul dvs. de operare, încercați să scrieți o aplicație simplă de testare care încearcă să creeze și să deschidă ceva de genul / abc / def / ghi / jkl / abc. txt. (Desigur, veți dori să folosiți un director care nu există.)

Apoi se va întâmpla una din două lucruri: Fie directorul, fie fișierul vor fi create, sau nu se va întâmpla nimic.

De exemplu, pe un sistem Windows, dacă încercăm să creăm un fișier într-un director care nu există, sistemul nu creează directorul. Asta pentru că adânc în interior, aplicația solicită în cele din urmă o funcție de sistem de operare care face munca murdară de a crea fișierul. Și această funcție particulară a sistemului de operare (se numește CreateFile (), dacă chiar îți pasă) are o regulă care nu va crea un director pentru tine.

Dacă doriți să determinați dacă clasa ostream nu a putut să creeze un fișier, puteți apela funcția membrilor fail (). Această funcție returnează adevărat dacă obiectul nu a putut crea fișierul. Și asta se întâmplă când un director nu există. Exemplul prezentat de DirectoryCheck01 demonstrează un exemplu de acest lucru.

#include #include folosind namespace std; int main () {outstream outfile ("/ abc / def / ghi / MyFile.txt"); dacă (outfile. fail ()) {cout << "nu a putut deschide fișierul!" << endl; retur 0;} outfile << "hi" << endl; outfile. închide(); return 0;}

Când executați acest cod, presupunând că nu aveți un director numit / abc / def / ghi în sistemul dvs., ar trebui să vedeți mesajul Nu a putut fi deschis fișierul! Presupunând că sistemul dvs. de operare nu creează un director în acest caz; în caz contrar, calculatorul vă va deschide fișierul, va scrie Salut și va continua viața fericită după ce a închis lucrurile.

Ca alternativă la apelarea funcției membru fail (), puteți utiliza un operator disponibil în diferite clase de flux. Aceasta este!, numit în mod fericit ca operatorul "bang", și l-ați folosi în loc de a apela fail (), ca în acest cod:

dacă (!outfile) {cout << "nu a putut deschide fișierul!" << endl; retur 0;}

Majoritatea oamenilor preferă să folosească! outfile în loc de outfile. fail (), deși! outfile face cod confuz. Motivul este că outfile-ul este un obiect și noțiunea de! outfile pur și simplu nu are sens.

De fapt,! outfile excursii până mulți programatori începători. Ei știu că outfile nu este un pointer în acest cod exemplu, și ei se întreabă cum ai putea să-l testezi împotriva 0, așa cum în mod normal poți face doar cu un pointer. (Amintiți-vă, spunând! X, unde x este un pointer, testați x împotriva 0.) Și asta pur și simplu nu are sens! Și astfel, pentru a evita confuzia, doar apelul eșuează (). E mai logic.

Iată câteva motive pentru care crearea fișierelor dvs. poate sufoca:

  • Directorul nu există.

  • Nu mai aveți spațiu pe disc și aveți noroc.

  • Aplicația dvs. nu are permisiunile potrivite pentru a crea un fișier.

  • Numele fișierului a fost nevalid - adică conținea caractere pe care sistemul de operare nu le permite să se înscrie într-un nume de fișier, cum ar fi * sau?.

Ca orice aplicație bună, aplicația dvs. ar trebui să facă două lucruri:

  1. 1. Verificați dacă a reușit crearea unui fișier.

  2. 2. Dacă crearea fișierului a eșuat, procedați corespunzător.

    Nu imprimați doar un mesaj oribil cum ar fi Oops! Abandonarea!, lăsând utilizatorilor dvs. săraci să nu aibă altă posibilitate decât să arunce monitorul pe podea. În schimb, faceți ceva mai prietenos - cum ar fi prezentarea unui mesaj spunându-le că există o problemă și sugerând că ar putea elibera mai mult spațiu pe disc.

Manipularea erorilor în C ++ la deschiderea unui fișier - dummies

Alegerea editorilor

Social Media Design: Twitter Opțiuni imagine - dummy

Social Media Design: Twitter Opțiuni imagine - dummy

Jonglați constrângerile legate de spațiu și modul cel mai bun de a poziționa cele trei imagini separate pe care vi se permite să le utilizați în profilul dvs. Twitter.

Social Media Design: Inspirând exemplele de afaceri pe Facebook - manechine

Social Media Design: Inspirând exemplele de afaceri pe Facebook - manechine

ÎNainte de scufundări în elementele de bază ale proiectării o pagină solidă Facebook, aruncați o privire asupra unor branduri care profită din plin de Facebook cu pagini proprii. Persoanele fizice și organizațiile de la bloggeri la proprietarii de magazine Etsy de la domiciliu la branduri internaționale folosesc Facebook pentru a se conecta cu clienții și fanii existenți, precum și cu potențialul lor ...

Social Media Optimization: Publicarea Tweets automat la profilul dvs. Facebook - dummies

Social Media Optimization: Publicarea Tweets automat la profilul dvs. Facebook - dummies

Lucrurile noi pe care să le postați pe Facebook pot fi o adevărată corvoadă. Din fericire, există un truc pe care îl puteți optimiza pe acest site media social. Dacă puteți atinge postarea încrucișată a conținutului între servicii, vă puteți salva ceva timp. Twitter vă oferă posibilitatea de a vă conecta profilul cu alte servicii. Există, ...

Alegerea editorilor

Cum se verifică performanța sistemului cu AWS - dummies

Cum se verifică performanța sistemului cu AWS - dummies

AWS (Amazon Web Services) metode pentru monitorizarea serviciilor specifice AWS. Cu toate acestea, este posibil să aveți probleme de performanță a sistemului sau probleme de aplicare non-AWS care trebuie abordate, ceea ce înseamnă că aveți instrumente care pot funcționa în afara AWS. Pachetul de grupuri de instrumente de performanță conține un număr de instrumente specifice pentru realizarea acestei sarcini ...

Cum să alegeți serviciile AWS de care aveți nevoie - dummies

Cum să alegeți serviciile AWS de care aveți nevoie - dummies

Amintiți-vă că aveți doar 12 luni de libertate proces în care să se ia decizii privind serviciile AWS (Servicii Amazon Web) pe care să le utilizați în afacerea dvs. Douăsprezece luni pot părea mult timp, dar veți descoperi că se evaporă înaintea ochilor dvs. în timp ce încercați să vă jonglați responsabilitățile zilnice, întâlnirile ...

Probleme de securitate aWS - dummy

Probleme de securitate aWS - dummy

Pentru a utiliza AWS (Amazon Web Services) cale. Administratorii și profesioniștii în domeniul securității se pot răzbuna rapid, încercând să păstreze aceste computere interconectate în siguranță, dar aceasta face parte din descrierea postului. Trebuie să urmați cele mai bune practici în securizarea sistemelor informatice, a datelor pe care le conțin, ...

Alegerea editorilor

Cum se asamblează o Circuit de organe color - dummies

Cum se asamblează o Circuit de organe color - dummies

După ce ați strâns toate materialele de care aveți nevoie construiți un organ de culoare, sunteți gata să asamblați proiectul. Vedeți ce aveți nevoie pentru a construi un circuit de organe color. Veți avea nevoie de următoarele instrumente: Sârma de lipit, de preferință cu setări de 20 și 40 W Solder Utilizați lipire mai groasă pentru firele de tensiune și subțire ...

Construirea unui Circuit Dead-Bug Style - dummies

Construirea unui Circuit Dead-Bug Style - dummies

) Sunt montate cu capul în jos pe placa de circuit imprimat (PC), majoritatea picioarelor lipindu-se în aer! Arata ca multe. . . morți bug-uri! Un alt nume pentru acest tip de construcție este "circuitele de aer", deoarece componentele sunt atașate direct la ...

Aplicarea RFID în lumea reală - dummies

Aplicarea RFID în lumea reală - dummies

Capacitatea de a urmări și de a urmări, de a urmări și de a găsi, peek sunt toate îmbunătățite prin utilizarea RFID. Unii avocați de confidențialitate vă faceți griji că aparatele vor atașa în mod magic etichetele RFID la îmbrăcăminte sau pantofi pe măsură ce vă plimbați prin magazin sau în jurul unui birou, dar acest lucru este foarte puțin probabil. Limitele ...