Bem-vindo de volta a esta palestra, vamos discutir os erros e os erros de manipulação de exceções devem
acontecer no seu código.
Ninguém é perfeito e os erros definitivamente surgirão especialmente quando alguém acabar
usando seu código de forma inesperada.
Podemos usar o tratamento de erros na tentativa de planejar possíveis erros que possam surgir em nosso
código no futuro.
gravar no arquivo quando realmente só foi aberto com o modo para ler atualmente se há algum tipo de erro
dentro de nossos programas, todos os scripts vão parar e voltamos algum tipo de declaração de erro.
Por exemplo, talvez em alguma parte do seu código você tente abrir o arquivo, então, mais tarde, outra
pessoa está usando seu código e o usuário pode tentar realmente
Na verdade, podemos usar o tratamento de erros para permitir que o script continue se o outro código e denuncie o erro.
Portanto, mesmo que haja um erro, o código informará o erro e continuará.
Agora, existem três palavras-chave para esse processo de tratamento de exceções.
E é a tentativa exceto.
E, finalmente, palavras-chave e todos eles terão um bloco de código associado a eles.
tentativa de código que é o bloco de código que será tentado e isso pode ou não levar a um erro.
Então, sob o bloco de
Então, uma vez que você tenta o bloco de código de tentativa real se houver um erro, você possui o bloco de aceitação e este é
um código de bloco que será executado no caso de haver algum erro dentro desse bloco de tentativa.
Então você tem um último bloco de código que é um último bloco de código que sempre é
executado, independentemente de existir ou não uma exceção ou erro.
Vamos pular para o caderno e ver alguns exemplos de como usar esses blocos.
ESTÁ BEM.
Comecemos por realmente ver um exemplo de algum erro que possa ocorrer.
Imaginemos que temos uma função muito simples, uma função de adicionar e uma e duas e, então, o que ela faz,
apenas imprime a soma delas e uma mais e duas, você pode estar pensando não haver problema
aqui.
Eu só vou dizer adicionar 10 e 20 e você volta 30.
Mas vamos imaginar que você tenha a seguinte situação.
Você tem alguma variável número um.
Você definiu isso igual a 10.
obter o segundo número que você pede como entrada e digamos que o número dois é igual à entrada de.
Então você tem um monte de código e, mais tarde, para
Por favor.
Forneça um número.
Então nos pede, forneça um número.
Nós dizemos 20 e então o que acabamos fazendo é que dizemos, deixe-me chamar a função novamente no número 1
e número dois.
Espero que você perceba que isso já lhe dará um erro porque aviso recorde que quando você
chama a função de entrada 20 aqui é realmente uma string.
Então, quando eu executo isso, ele diz que você tem um erro de tipo.
Então, note aqui que existe uma exceção específica real que o Python está tentando dizer sobre
o erro de tipo e que diz que o tipo de operação não suportado é quatro mais inteiro e seqüência de caracteres.
Então, basicamente, dizendo-lhe, oi, eu não consigo adicionar um número inteiro e uma string juntos. Posso adicionar dois inteiros juntos
ou posso concatenar duas cordas juntas, mas não posso trabalhar com esses dois tipos de dados.
E este é um exemplo do tipo de erro que você pode obter ao executar seu código.
E infelizmente, vamos dizer que queria ter uma declaração impressa.
Então, digamos que algo aconteceu.
E eu executo esta declaração de impressão nunca ocorrerá.
O que vai acontecer é que recebo um erro.
E esse é o fim do meu script.
Não importa se eu tenho centenas de linhas de passar este bloco de código.
Eu ainda recebo esse erro de tipo e nada mais depois que ele for executado.
A idéia por trás da tentativa de aceitar e, finalmente, afirmações é que, mesmo que isso
aconteça, vamos tentar fazer esse bloco de código.
E mesmo que haja um erro, podemos continuar com algum código mais.
Então, como faremos isso.
Bem, temos que tentar a palavra-chave colon.
E então temos o bloco de código.
Então, este é o código que você deseja experimentar.
Então, você quer tentar esse código, porém pode ter um erro.
Então, aqui vou dizer que o resultado é igual a 10 mais 10 anos atrás.
Então sabemos que isso não vai induzir um erro.
E então, o que vou fazer aqui é que eu vou ter o meu exceto bloco de código.
Então, meu exceto bloco de código é o que eu quero ter acontecido se houver um erro e isso é realmente comum.
Quando você está criando bibliotecas maiores que outras pessoas vão usar você pode ter, exceto
bloco, para que você possa imprimir uma mensagem mais específica para o usuário.
Então, talvez você possa dizer que, parece que você não está adicionando corretamente.
Então eu vou correr isso e isso.
Nós realmente não induzimos ar.
Em vez disso, posso chamar resultados aqui sem nenhum problema como o que faz sentido porque Templeton não tem problemas.
Vamos agora criar esse ar.
Vou tentar adicionar o número inteiro 10 à string 10 aqui.
Agora, quando eu executo isso, ele diz que parece que você não está adicionando corretamente.
Agora note o que aconteceu aqui.
O resto do bloco de código ainda foi capaz de executar com a declaração de aceitação, o meu programa inteiro
não foi desligado apenas porque eu tinha algum tipo de erro como antes.
Em vez disso, tentei esse bloco de código e então eu disse, exceto e, em geral, posso dizer, exceto
se houver algum tipo de erro, faça esse código aqui.
Agora vamos imaginar que eu quero um bloco de código para executar se não houver nenhuma exceção.
Eu poderia fazer algo assim.
Eu posso dizer.
Outros resultados e mais do que eu posso dizer que Prince Ad foi bem.
Então, agora, quando eu executo isso, apenas diz que parece que você não está codificando corretamente.
Então isso é conhecido como uma tentativa.
Exceto.
Declaração adicional.
E o que temos aqui é o bloco de código que vamos tentar.
E então temos duas opções.
Se houver um erro nesse bloco de tentativa, nós executamos o código exceto outro.
Se não houver nenhum erro, nós executamos isso.
Código adicional.
Então, vamos consertar isso e não produza mais um erro.
Nós executamos isso.
Nós tentamos esse bloco de código desde que foi bem-sucedido.
Não executamos isso exceto um bloco de código.
Em vez disso, saltamos direto para mais e dizemos que o anúncio foi bem e temos 20.
ESTÁ BEM.
Então vamos tentar.
Exceto.
Além disso, agora podemos usar a palavra-chave final para ter um bloco de código.
Sempre executando.
Independentemente de haver um erro.
Então, mostre isso, vou construir um exemplo em que realmente tentamos escrever alguns arquivos.
Então, vamos explorar esse conceito de tentativa exceto.
E, finalmente, trabalhando em um novo exemplo e neste exemplo, vamos tentar abrir um arquivo para que possamos ter
algum arquivo de teste e vamos começar abrindo no modo W.
Esse é o modo direito que nos permite abrir o arquivo e gravá-lo ou criar o
arquivo se ele ainda não existir.
E então vou dizer F que é certo e vou escrever uma linha de teste para este arquivo e então digo exceto
e aqui posso dizer, exceto dois pontos, e isso vai acontecer com exceção de qualquer erro.
tipos de erros que eu posso especificamente, exceto por exemplo, eu posso tentar apenas exceto esse tipo de erro.
Mas na verdade, existem muitos
Então, o que acontece é notável.
Tivemos esse erro de tipo específico.
O que eu poderia fazer é dizer oi apenas se houver um erro de tipo imprimir.
Ocorreu um erro de tipo.
Então eu poderia tentar outro erro que realmente está associado à abertura e escrita de arquivos.
E se você acessar a documentação, pode chegar a erros e exceções e isso explica erros de
sintaxe e exceções em geral.
Mas você notará que há um link aqui é uma construção de exceções que salta para a Seção 5
aqui da documentação e esta é realmente uma lista de todos os diferentes tipos de exceções e erros
que podem acontecer.
Então, se você continuar chamando, há um erro de afirmação e o erro do arquivo equivale a erros de índice de
erros.
Alguns destes, você pode ter visto antes do que não vimos, há erros de recursão de erros do sistema operacional
que transbordam todos os diferentes tipos de erros.
Você pode tentar especificamente pegar.
Então, em nosso caso, o erro que vai ocorrer quando você está abrindo e escrevendo para arquivos que
você não tem permissões é um sistema operacional.
Errar.
E nós vamos imprimir pagar, você tem um ar de sistema operacional, você também pode dizer que eu tenho ar, dependendo da versão do python
que você tem e então vamos adicionar em um bloco final e isso, finalmente, o bloco sempre vai executar
não o que importa.
Então, diga que eu sempre correi correndo isso agora mesmo e agora nós acabamos de voltar.
Eu sempre corro.
Então, o que realmente está acontecendo aqui.
Bem, abrimos o arquivo de teste que chamamos diretamente para que todos os trabalhos significem que eu não tenho esse exceto bloco em
execução e não tenho esse exceto bloco em execução.
Então, eu apenas digo, finalmente, eu imprimo.
Eu sempre corro.
Agora é realmente induzir um erro ao abri-lo com o nosso. Então, isso é permissão somente leitura.
Então, devemos ter um erro nesta linha quando tentamos escrever no arquivo.
Agora, não devemos obter um erro de tipo porque na verdade não é o erro que estamos recebendo.
Em vez disso, devemos obter um erro de sistema operacional porque esse é o erro relacionado a tentar escrever em um arquivo para
o qual você apenas possui permissões de leitura.
Então, se eu executar isso, volto.
Ei, você tem um erro de sistema operacional.
E ao contrário da última vez em que tínhamos isso, exceto que é só um desses blocos vai ser
executado com a declaração final, exceto o bloco será executado e, finalmente, o bloco será executado.
ter impressões específicas para erros específicos onde você poderia fazer é dizer que você tem erro de
tipo aqui e você não queria memorizar todos os outros tipos, se você apenas diz, exceto no final disto.
E é assim que você pode alinhar um monte de exceções para
Esta será todas as outras exceções.
Então, todas as outras exceções e todas as corridas novamente.
E diz todas as outras exceções porque não detectou o erro de tipo ou qualquer outro
erro que definimos.
Então, se você apenas diz, exceto o cólon, você imprimirá esse erro.
ESTÁ BEM.
todos os tipos de erro e, provavelmente, seus blocos de código apenas se parecerão com isso.
Portanto, lembre-se de que você está começando no Python, você provavelmente não memorizará
Experimentar.
Exceto.
E finalmente.
Então, apenas para reiterar o bloco de tentativa de código, é o bloco de código que você tentará
tentar, exceto um bloco de código que ocorrerá quando houver um erro na sua declaração de tentativa.
E então você tem a opção de colocar finalmente um bloco aqui que sempre executará se há ou
não um erro ou você pode ter um código de bloco ELSE que só vai ao X-2 quando não houver um erro.
Ok, então vamos nos concentrar nisso mais uma vez aqui.
Agora, não há, não haverá nenhum erro porque eles vão dizer que estarão lá.
Se eu executar isso, volto.
Eu sempre corro.
Então, não há erro.
Finalmente, o bloco ainda é executado.
Nós induzimos um erro.
Nós dizemos todas as outras exceções porque eu só estou dizendo e geralmente, exceto aqui, faz o que for.
Este bloco de código diz que finalmente ele faz esse bloco de código.
Então, isso finalmente bloqueia, independentemente de haver um erro, ele sempre será executado.
Então, vamos terminar nossa discussão aqui mostrando como usar os truques que finalmente bloqueiam dentro de uma
função que tenta obter um tipo específico de entrada de um usuário.
Então, vamos fazer aqui o seguinte.
Vamos dizer que a DPF pede eu. Então, o que essa função faz é tentar pedir ao usuário um número inteiro.
Então eu direi o seguinte.
Tente resultar é igual ao número inteiro da entrada, por favor.
Forneça o número e, em seguida, se tivermos um erro
aqui e vai dizer exceto e vou imprimir whoops que não é um número.
E então eu vou dizer finalmente imprimir e de tri, exceto por fim.
Então eu executo isso e vamos fazer uma iteração nesta função apenas um pouco,
mas eu vou chamar essa função agora.
Faça o turno entrar.
Solicita-me que forneça um número.
converter ou transformar 20 em um número inteiro.
Deixe-o dar um 20 e eu só obtenho e a tentativa, exceto, finalmente, faz sentido que whoops que não seja um número que imprima porque conseguimos
Mas o que acontece se eu executar a célula novamente.
E agora eu dou uma palavra.
Agora eu sei que definitivamente não consigo transformar a palavra string em um número inteiro.
Então, quando eu executo isso, ele diz whoops que não é um número.
Agora temos um fim de tentativa.
Exceto por fim.
Então, vejamos como agora podemos usar um loop de tempo continuamente fazendo isso, tente um bloco de código.
E então, exceto se houver um erro.
OK, então, vamos ver se podemos ajustar esta função para que
ao invés de apenas acabar depois de fornecer a palavra errada, vamos colocá-la dentro de um ciclo
de tempo que continua indo sempre que você realmente tenha um bloco de código com nenhuma exceção.
Então eu vou fazer isso enquanto é verdade e você sempre deve ter cuidado ao fazer algum tempo.
Verdadeiro, porque basicamente significa que você precisa usar uma declaração de
quebra em algum lugar para sair deste loop while.
Eu vou afastar tudo isso destaque tudo hit tab aqui e vou dizer verdade selvagem.
Obter esse resultado como a entrada, então eu digo exceto whoops que não é um número.
E então eu vou dizer que continuar a tornar isso um pouco mais legível.
No que diz respeito à lógica do que está acontecendo, digamos que não há um erro, então vou dizer.
Além disso, você pode realmente combinar Elswyth finalmente aqui.
Então, vamos tentar este bloco de código.
Se houver um erro, eu vou dizer whoops que não é um número.
Continue em outro sentido, não há exceção.
Isso significa que o usuário forneceu um número inteiro.
Então, eu direi sim.
Obrigado.
Agora eu preciso sair deste loop while.
Então, vou dizer aqui o intervalo
que lembra que a indicação de interrupção aumenta até que esteja fechando loop, enquanto loop for loop e depois termina.
Então termine esse loop while.
Então, finalmente, vamos dizer e tentar, exceto por fim.
apenas fazê-lo muito claro que o Príncipe sempre correrá no final.
OK, então, coloquei esses quatro blocos de código dentro do nosso enquanto é verdade e vamos quebrar depois
de dizer sim, obrigado e teremos uma declaração Finalmente que diz impressão e a tentativa, exceto, finalmente, e podemos
Então, independentemente de haver um erro ou não, este último bloco de código sempre será executado.
Então, vamos executar isso, pedimos um número inteiro.
Vamos fornecer um número inteiro correto, vamos dizer 20 hit enter.
Diz sim sim.
Obrigado.
E a tentativa, exceto, finalmente, eu sempre vou correr no final.
Vamos providenciá-lo.
Uma string dirá q hit enter e diz whoops.
Esse não é um número e a tentativa.
Finalmente, sempre vou correr no final.
Exceto que temos a verdade aqui e essa interrupção ainda não foi executada.
Então, temos outra chance de fornecer um número que irá dizer.
Q Ele diz "Whoops" novamente.
pode realmente ser lançado como um número inteiro.
E você pode continuar fornecendo-o repetidamente as coisas erradas e vai continuar pedindo-lhe a entrada até você finalmente fornecer algo que é mantido que
Você diz 90 e diz sim.
Obrigado.
E a tentativa, exceto, finalmente, sempre no final.
Então, o que está acontecendo aqui, estamos dizendo, enquanto verdade,
tente este bloco de código se houver uma exceção, faça algo e depois continue, o que significa que não há exceção.
Você pode imprimir algum tipo de declaração e depois quebrar.
E, normalmente, você só vai querer sair disso enquanto é verdade quando não há exceção.
Então, finalmente, se por algum motivo você queria que algo continuasse.
Então, uma coisa boa aqui pode ser como eu vou te perguntar de novo.
Nova linha.
Então, esse é um exemplo mais realista de por que você diria finalmente.
Então, se eu executar isso novamente, eles dirão, forneça o número.
Damos a resposta errada.
Diz que é o nosso número.
Eu vou pedir-lhe novamente, forneça um número e, em seguida, você pode fornecer o número correto.
E diz sim.
Obrigado.
Infelizmente, vai dizer que vou te pedir novamente.
Então, é por isso que muitas vezes as pessoas não gostam de misturar mais.
E, finalmente, as declarações, mas há a opção para
você no caso de você querer onde você poderia fazer em vez de simplesmente se livrar
dessa afirmação final e quando você é um código como este e você vai dizer, forneça meu número.
Bem, isso não é um número.
Você pode continuar fazendo isso uma e outra vez até que você
realmente forneça o número e diga Sim. Eu acho que você depende de você se deseja misturar Elsin finalmente bloqueia, mas você pode, se quiser.
Tudo bem.
Esse é o básico de tentar.
Exceto.
Outro.
Próximamente, vamos dar-lhe uma tarefa para testar suas novas habilidades sobre isso.
Vamos ver se eles estão.