Lar Finanças Pessoais Manipulação de erros em C ++ Ao abrir um arquivo - manequins

Manipulação de erros em C ++ Ao abrir um arquivo - manequins

Vídeo: Programar em C - Manipulação de Arquivos txt em C / Ler Dados - Aula 82 2024

Vídeo: Programar em C - Manipulação de Arquivos txt em C / Ler Dados - Aula 82 2024
Anonim

Quando você abre um arquivo, todos os tipos de coisas podem dar errado. Um arquivo vive em um dispositivo físico - um disco fixo, por exemplo, ou talvez em uma unidade flash ou cartão SD - e você pode enfrentar problemas ao trabalhar com dispositivos físicos.

Por exemplo, parte do disco pode estar danificada, fazendo com que um arquivo existente fique corrompido. Ou, menos desastroso, você pode ficar sem espaço em disco. Ou, mesmo menos desastroso, você pode tentar abrir um arquivo em um diretório que não existe.

Se você tentar abrir um arquivo para escrever especificando um caminho completo e um nome de arquivo, mas o diretório não existe, o computador responde de forma diferente, dependendo do sistema operacional que você está usando. Se você não tiver certeza de como seu sistema operacional irá responder, tente escrever um aplicativo de teste simples que tente criar e abrir algo como / abc / def / ghi / jkl / abc. TXT. (Claro, você vai querer ter certeza de usar um diretório que não existe.)

Então, uma das duas coisas acontecerá: Ou o diretório e o arquivo serão criados, ou nada acontecerá.

Por exemplo, em um sistema Windows, se tentarmos criar um arquivo em um diretório que não existe, o sistema não cria o diretório. Isso é porque, no fundo, o aplicativo geralmente chama uma função de sistema operacional que faz o trabalho sujo de criar o arquivo. E esta função particular do sistema operacional (é chamado CreateFile (), se você se importar) tem uma regra de que não irá criar um diretório para você.

Se você deseja determinar se a classe ostream não pôde criar um arquivo, você pode chamar sua função de membro fail (). Esta função retorna true se o objeto não puder criar o arquivo. E é o que acontece quando um diretório não existe. O exemplo do DirectoryCheck01 mostrado demonstra um exemplo disso.

#include #include usando namespace std; int main () {outstream outstream ("/ abc / def / ghi / MyFile. txt"); se (outfile. fail ()) {cout << "não pôde abrir o arquivo!" << endl; retornar 0;} outfile << "oi" << endl; outfile. fechar(); retornar 0;}

Quando você executa este código, assumindo que você não possui um diretório chamado / abc / def / ghi no seu sistema, você deve ver a mensagem. Não foi possível abrir o arquivo! Supondo que seu sistema operacional particular não crie um diretório neste caso; Se o fizer, o seu computador abrirá o arquivo, escreva Olá e continue com sua vida feliz depois de fechar as coisas.

Como alternativa para chamar a função de falha (), você pode usar um operador disponível em várias classes de fluxo. Isto é!, designado como o operador "bang", e você o usaria no lugar da falha de chamada (), como neste código:

se (!outfile) {cout << "não pôde abrir o arquivo!" << endl; return 0;}

A maioria das pessoas prefere usar! outfile em vez de outfile. falha (), embora! outfile faz código confuso. A razão é que outfile é um objeto, e a noção de! outfile simplesmente não faz sentido.

Na verdade,! Outfile dispara muitos programadores iniciais. Eles sabem que o outfile não é um ponteiro neste código de exemplo, e eles se perguntam como você pode testá-lo contra 0, como você normalmente pode fazer com um ponteiro. (Lembre-se, dizendo! X, onde x é um ponteiro, você está testando x contra 0.) E isso simplesmente não faz sentido! E assim, para evitar confusões, basta chamar fail (). Faz mais sentido.

Aqui estão alguns motivos para a tentativa de criação do arquivo:

  • O diretório não existe.

  • Você está fora do espaço em disco e sem sorte.

  • Seu aplicativo não possui as permissões corretas para criar um arquivo.

  • O nome do arquivo era inválido - ou seja, continha caracteres que o sistema operacional não permite em um nome de arquivo, como * ou?.

Como qualquer boa aplicação, sua aplicação deve fazer duas coisas:

  1. 1. Verifique se uma criação de arquivo foi bem-sucedida.

  2. 2. Se a criação do arquivo falhou, lembre-a adequadamente.

    Não imprima apenas uma mensagem horrível como Oops! Abortando!, deixando seus usuários pobres sem escolha, mas para jogar o monitor no chão. Em vez disso, faça algo mais amigável - como apresentar uma mensagem dizendo que existe um problema e sugerindo que eles possam liberar mais espaço em disco.

Manipulação de erros em C ++ Ao abrir um arquivo - manequins

Escolha dos editores

Filmando fotos em situações especiais com Canon Rebel Série T3 Câmeras - manequins

Filmando fotos em situações especiais com Canon Rebel Série T3 Câmeras - manequins

ÀS vezes haverá não há problema em tirar o seu Canon Rebel T3 ou T3i fora e tirar fotos com configurações automáticas. A maior parte do tempo, você pode fazer com alguns ajustes simples. Alguns assuntos e situações de filmagem apresentam alguns desafios adicionais que exigem combinações de configurações mais complicadas. ...

Escolha dos editores

Obtendo o WordPress. org Software - dummies

Obtendo o WordPress. org Software - dummies

Depois de classificar seu host e domínio do site, você deve baixar e extrair os arquivos do WordPress pela WordPress. org e colocá-los no seu computador. Escolha um lugar que você lembrará, como um diretório de Documentos ou Download. Siga estas etapas: aponte seu navegador para o WordPress. org. A página principal do WordPress aparece. Clique em ...

Google AdSense para Bloggers de Mom - dummies

Google AdSense para Bloggers de Mom - dummies

Google O AdSense não é uma rede de anúncios orientada para a mãe, nem é A melhor opção de publicidade para a maioria dos blogs da mãe. Há certamente exceções a isso, especialmente se você blogar sobre produtos ou marcas. Todos os blogueiros que exibem publicidade devem ter um provedor de anúncios de backup - e o AdSense é uma ótima solução para essa necessidade. AdSense aprova ...

Relatório de conteúdo principal do google Analytics - dummies

Relatório de conteúdo principal do google Analytics - dummies

O relatório Top Content é um dos relatórios mais importantes no Google Analytics. Este relatório mostra as postagens mais populares no blog da sua mãe. Seu conteúdo popular dá uma visão do porquê seus leitores chegam até você. Os tópicos dessas postagens indicam o que as pessoas gostam, mesmo quando não comentam. Para visualizar ...

Escolha dos editores

Como fazer uma imagem disparar um link - as manequins

Como fazer uma imagem disparar um link - as manequins

Usam imagens para navegação . Eles são mais bonitos que os links de texto simples, e você pode adicionar a forma e a função na sua página com um elemento. Para criar uma imagem que desencadeia um link, você substitui um elemento no lugar do texto ao qual você ancoraria seu link. Esta marcação liga o texto: ...

Como abrir links em novos Windows ou Tabs com HTML5 - dummies

Como abrir links em novos Windows ou Tabs com HTML5 - dummies

O A web funciona porque você pode vincular páginas em seu site para páginas nos sites de outras pessoas usando um elemento de âncora simples. Quando você liga para o site de outra pessoa, você envia usuários para longe de seu próprio site. Para manter os usuários no seu site, HTML pode abrir a página vinculada em uma nova janela ...

Como criar tabelas em HTML5 - dummies

Como criar tabelas em HTML5 - dummies

O recipiente de marcação primária para tabelas em HTML é a tabela elemento. Ou seja, você usa a tag de abertura para denotar o início de uma tabela e você adiciona a tag de fechamento para encerrá-la. Além disso, os blocos de construção básicos para dados de tabela em HTML são a linha da tabela ( ) e os dados da tabela ...