Hjem Personlig finansiering Håndtering av feil i C ++ når du åpner en fil - dummies

Håndtering av feil i C ++ når du åpner en fil - dummies

Video: Warlock | Henry Fonda | WESTERN MOVIE | Full Length Cowboy Film | English 2025

Video: Warlock | Henry Fonda | WESTERN MOVIE | Full Length Cowboy Film | English 2025
Anonim

Når du åpner en fil, kan alle slags ting gå galt. En fil lever på en fysisk enhet - en fast disk, for eksempel, eller kanskje på en flash-enhet eller SD-kort - og det kan føre til problemer når du arbeider med fysiske enheter.

For eksempel kan en del av disken bli skadet, noe som fører til at en eksisterende fil blir skadet. Eller, mindre katastrofalt, kan du gå tom for diskplass. Eller, enda mindre katastrofalt, kan du prøve å åpne en fil i en katalog som ikke eksisterer.

Hvis du prøver å åpne en fil for å skrive ved å angi en full sti og filnavn, men katalogen ikke finnes, reagerer datamaskinen annerledes, avhengig av hvilket operativsystem du bruker. Hvis du er usikker på hvordan ditt operativsystem vil svare, kan du prøve å skrive et enkelt testprogram som prøver å opprette og åpne noe som / abc / def / ghi / jkl / abc. tekst. (Selvfølgelig vil du være sikker på å bruke en katalog som ikke eksisterer.)

Deretter vil en av to ting skje: Hverken katalogen og filen vil bli opprettet, eller ingenting vil skje.

Hvis vi for eksempel forsøker å lage en fil i en katalog som ikke eksisterer, oppretter systemet ikke katalogen i et Windows-system. Det er fordi dypt ned inne, kaller programmet til slutt en operativsystemfunksjon som gjør det skitne arbeidet med å skape filen. Og denne operativsystemfunksjonen (det kalles CreateFile (), hvis du engang bryr deg) har en regel om at den ikke vil opprette en katalog for deg.

Hvis du vil avgjøre om ostream-klassen ikke var i stand til å opprette en fil, kan du ringe sin fail () -funksjon. Denne funksjonen returnerer sant hvis objektet ikke kunne opprette filen. Og det er hva som skjer når en katalog ikke eksisterer. Det viste DirectoryCheck01-eksemplet viser et eksempel på dette.

#include # include using namespace std; int main () {ofstream outfile ("/ abc / def / ghi / MyFile. txt"); hvis (outfile. fail ()) {cout << "kunne ikke åpne filen!" << endl; return 0;} outfile << "hei" << endl; outfile. Lukk(); returner 0;}

Når du kjører denne koden, antar du at du ikke har en katalog kalt / abc / def / ghi på systemet, bør du se meldingen Kunne ikke åpne filen! Forutsatt at ditt operativsystem ikke oppretter en katalog i dette tilfellet; Hvis det gjør det, vil datamaskinen åpne filen, skrive Hei til det, og fortsette med sitt lykkelige liv etter å ha lukket ting ut.

Som et alternativ til å ringe funksjonen fail (), kan du bruke en operatør tilgjengelig i ulike strømklasser. Dette er!, kyndig referert til som "bang" -operatøren, og du vil bruke den i stedet for å ringe mislykkes (), som i denne koden:

hvis (!outfile) {cout << "kunne ikke åpne filen!" << endl; returner 0;}

De fleste foretrekker å bruke! outfile i stedet for outfile. mislykkes (), selv om! Outfile gjør forvirrende kode. Årsaken er at outfile er et objekt, og ideen om! Outfile betyr ikke noe fornuftig.

Faktisk! Outfile reiser opp mange begynnende programmerere. De vet at utskrift ikke er en peker i denne prøvekoden, og de lurer på hvordan du kan teste den mot 0 som du vanligvis bare kan gjøre med en peker. (Husk, ved å si! X, hvor x er noen peker, du tester x mot 0.) Og det er bare ikke fornuftig! Og så, for å unngå forvirring, bare ring feil (). Det gir mer mening.

Her er noen grunner til at filopprettelsen kan stryke:

  • Telefonboken finnes ikke.

  • Du er ute av diskplass og uten lykke.

  • Din søknad har ikke rettigheter for å opprette en fil.

  • Filnavnet var ugyldig - det inneholdt tegn som operativsystemet ikke tillater i et filnavn, for eksempel * eller?.

Som enhver god applikasjon, bør søknaden din gjøre to ting:

  1. 1. Kontroller om en filopprettelse lyktes.

  2. 2. Hvis filopprettelsen mislyktes, må du håndtere den på riktig måte.

    Ikke skriv ut en forferdelig melding som Ups! Avbryter!, slik at de dårlige brukerne ikke har noe annet valg enn å kaste skjermen på gulvet. I stedet gjør noe vennligere - for eksempel å presentere en melding som forteller dem at det er et problem og foreslår at de kan frigjøre mer diskplass.

Håndtering av feil i C ++ når du åpner en fil - dummies

Redaktørens valg

Hvordan lage Baseball Practice Fun - Dummies

Hvordan lage Baseball Practice Fun - Dummies

Som baseball trener må du ikke bare lære laget ditt grunnleggende i spillet, må du lære disse grunnleggende morsomme, slik at spillerne blir interessert og engasjert. Bruk tipsene i følgende liste for å gjøre baseballøvelsen morsom: Sørg for mange repetisjoner for hvert barn. Stopp treningen kort ...

Basisspillers ansvar i Baseball - dummies

Basisspillers ansvar i Baseball - dummies

Baseball trener er ikke bare ansvarlige for lagspillet som en hel, men for coaching spillere når de når første og tredje base i løpet av et baseballspill. Ansvaret for å coaching hver base er forskjellig. Hva en første basissjåfør gjør: Oppfordrer smeten til å kaste ned første baseline på infield hits. ...

Hvordan fantasy baseball ligaene blir scoret - dummies

Hvordan fantasy baseball ligaene blir scoret - dummies

Fantasy baseball har tre hovedspillformater som bestemmer hvordan ligaen din score punkter. Spillformatene for fantasybaseball er Rotisserie, Head-to-Head One Win og Point System. Hvert format blir scoret avhengig av ligaoppsettet. For eksempel vil 5 × 5 liga score poeng eller gevinster / tap på fem forhåndsvalgte treffstatistikk, samt fem ...

Redaktørens valg

Praktiserer dag til dag, uformell oppmerksomhet - dummies

Praktiserer dag til dag, uformell oppmerksomhet - dummies

Kan trene det når som helst. Uformell oppmerksomhet meditasjon er når du trener oppmerksomhet uten å skille ut en spesiell tid for det. Her er ti eksempler på uformell oppmerksomhet: Mindful kommunikasjon - Når du snakker eller hører på noen andre, blir du klar over lyden av ...

Forbli lekfull og lyshjerte når du praktiserer Mindfulness - dummies

Forbli lekfull og lyshjerte når du praktiserer Mindfulness - dummies

En nydelig holdning til å ha oppmerksomhet og Livet generelt er lekenhet og lethed. Hvis en meditasjon ikke virker for deg første gang eller ikke føles riktig for deg, ikke vær panikk, men tenk på opplevelsen som et eksperiment som du kan prøve igjen senere. Tilnærming oppmerksomhet som du ville et nytt spill eller ...

Redaktørens valg

Valg av resolusjonsstørrelse på et Canon EOS Rebel T3-serie kamera - dummies

Valg av resolusjonsstørrelse på et Canon EOS Rebel T3-serie kamera - dummies

For å bestemme seg for en Kvalitetsinnstilling (eller bildeoppløsningstørrelse) for Canon Rebel T3 eller T3i, den første avgjørelsen du må gjøre er hvor mange piksler du vil at bildet skal inneholde. Piksler er de små firkantede fliser hvorfra alle digitale bilder er laget; piksel er kort for bildeelement. Hvis din ...

Hvordan du lager videobilder på Rebel T7i / 800D - dummies

Hvordan du lager videobilder på Rebel T7i / 800D - dummies

Videoopplastingsfunksjonen på Canon EOS Rebel T7i / 800D fanger korte videoklipp som er sydd i et enkelt opptak, kalt et videoalbum. Du kan stille klippelengden til 8, 4 eller 2 sekunder lang (men alle klippene i et album må ha samme lengde). Med tanke på individets korthet ...