Bem-vindo de volta a esta palestra, vamos discutir os erros e os erros de manipulao de excees devem
acontecer no seu cdigo.
Ningum perfeito e os erros definitivamente surgiro especialmente quando algum acabar
usando seu cdigo de forma inesperada.
Podemos usar o tratamento de erros na tentativa de planejar possveis erros que possam surgir em nosso
cdigo 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 vo parar e voltamos algum tipo de declarao de erro.
Por exemplo, talvez em alguma parte do seu cdigo voc tente abrir o arquivo, ento, mais tarde, outra
pessoa est usando seu cdigo e o usurio pode tentar realmente
Na verdade, podemos usar o tratamento de erros para permitir que o script continue se o outro cdigo e denuncie o erro.
Portanto, mesmo que haja um erro, o cdigo informar o erro e continuar.
Agora, existem trs palavras-chave para esse processo de tratamento de excees.
E a tentativa exceto.
E, finalmente, palavras-chave e todos eles tero um bloco de cdigo associado a eles.
tentativa de cdigo que o bloco de cdigo que ser tentado e isso pode ou no levar a um erro.
Ento, sob o bloco de
Ento, uma vez que voc tenta o bloco de cdigo de tentativa real se houver um erro, voc possui o bloco de aceitao e este
um cdigo de bloco que ser executado no caso de haver algum erro dentro desse bloco de tentativa.
Ento voc tem um ltimo bloco de cdigo que um ltimo bloco de cdigo que sempre
executado, independentemente de existir ou no uma exceo 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 funo muito simples, uma funo de adicionar e uma e duas e, ento, o que ela faz,
apenas imprime a soma delas e uma mais e duas, voc pode estar pensando no haver problema
aqui.
Eu s vou dizer adicionar 10 e 20 e voc volta 30.
Mas vamos imaginar que voc tenha a seguinte situao.
Voc tem alguma varivel nmero um.
Voc definiu isso igual a 10.
obter o segundo nmero que voc pede como entrada e digamos que o nmero dois igual entrada de.
Ento voc tem um monte de cdigo e, mais tarde, para
Por favor.
Fornea um nmero.
Ento nos pede, fornea um nmero.
Ns dizemos 20 e ento o que acabamos fazendo que dizemos, deixe-me chamar a funo novamente no nmero 1
e nmero dois.
Espero que voc perceba que isso j lhe dar um erro porque aviso recorde que quando voc
chama a funo de entrada 20 aqui realmente uma string.
Ento, quando eu executo isso, ele diz que voc tem um erro de tipo.
Ento, note aqui que existe uma exceo especfica real que o Python est tentando dizer sobre
o erro de tipo e que diz que o tipo de operao no suportado quatro mais inteiro e seqncia de caracteres.
Ento, basicamente, dizendo-lhe, oi, eu no consigo adicionar um nmero inteiro e uma string juntos. Posso adicionar dois inteiros juntos
ou posso concatenar duas cordas juntas, mas no posso trabalhar com esses dois tipos de dados.
E este um exemplo do tipo de erro que voc pode obter ao executar seu cdigo.
E infelizmente, vamos dizer que queria ter uma declarao impressa.
Ento, digamos que algo aconteceu.
E eu executo esta declarao de impresso nunca ocorrer.
O que vai acontecer que recebo um erro.
E esse o fim do meu script.
No importa se eu tenho centenas de linhas de passar este bloco de cdigo.
Eu ainda recebo esse erro de tipo e nada mais depois que ele for executado.
A idia por trs da tentativa de aceitar e, finalmente, afirmaes que, mesmo que isso
acontea, vamos tentar fazer esse bloco de cdigo.
E mesmo que haja um erro, podemos continuar com algum cdigo mais.
Ento, como faremos isso.
Bem, temos que tentar a palavra-chave colon.
E ento temos o bloco de cdigo.
Ento, este o cdigo que voc deseja experimentar.
Ento, voc quer tentar esse cdigo, porm pode ter um erro.
Ento, aqui vou dizer que o resultado igual a 10 mais 10 anos atrs.
Ento sabemos que isso no vai induzir um erro.
E ento, o que vou fazer aqui que eu vou ter o meu exceto bloco de cdigo.
Ento, meu exceto bloco de cdigo o que eu quero ter acontecido se houver um erro e isso realmente comum.
Quando voc est criando bibliotecas maiores que outras pessoas vo usar voc pode ter, exceto
bloco, para que voc possa imprimir uma mensagem mais especfica para o usurio.
Ento, talvez voc possa dizer que, parece que voc no est adicionando corretamente.
Ento eu vou correr isso e isso.
Ns realmente no induzimos ar.
Em vez disso, posso chamar resultados aqui sem nenhum problema como o que faz sentido porque Templeton no tem problemas.
Vamos agora criar esse ar.
Vou tentar adicionar o nmero inteiro 10 string 10 aqui.
Agora, quando eu executo isso, ele diz que parece que voc no est adicionando corretamente.
Agora note o que aconteceu aqui.
O resto do bloco de cdigo ainda foi capaz de executar com a declarao de aceitao, o meu programa inteiro
no foi desligado apenas porque eu tinha algum tipo de erro como antes.
Em vez disso, tentei esse bloco de cdigo e ento eu disse, exceto e, em geral, posso dizer, exceto
se houver algum tipo de erro, faa esse cdigo aqui.
Agora vamos imaginar que eu quero um bloco de cdigo para executar se no houver nenhuma exceo.
Eu poderia fazer algo assim.
Eu posso dizer.
Outros resultados e mais do que eu posso dizer que Prince Ad foi bem.
Ento, agora, quando eu executo isso, apenas diz que parece que voc no est codificando corretamente.
Ento isso conhecido como uma tentativa.
Exceto.
Declarao adicional.
E o que temos aqui o bloco de cdigo que vamos tentar.
E ento temos duas opes.
Se houver um erro nesse bloco de tentativa, ns executamos o cdigo exceto outro.
Se no houver nenhum erro, ns executamos isso.
Cdigo adicional.
Ento, vamos consertar isso e no produza mais um erro.
Ns executamos isso.
Ns tentamos esse bloco de cdigo desde que foi bem-sucedido.
No executamos isso exceto um bloco de cdigo.
Em vez disso, saltamos direto para mais e dizemos que o anncio foi bem e temos 20.
EST BEM.
Ento vamos tentar.
Exceto.
Alm disso, agora podemos usar a palavra-chave final para ter um bloco de cdigo.
Sempre executando.
Independentemente de haver um erro.
Ento, mostre isso, vou construir um exemplo em que realmente tentamos escrever alguns arquivos.
Ento, 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 comear abrindo no modo W.
Esse o modo direito que nos permite abrir o arquivo e grav-lo ou criar o
arquivo se ele ainda no existir.
E ento vou dizer F que certo e vou escrever uma linha de teste para este arquivo e ento digo exceto
e aqui posso dizer, exceto dois pontos, e isso vai acontecer com exceo 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
Ento, o que acontece notvel.
Tivemos esse erro de tipo especfico.
O que eu poderia fazer dizer oi apenas se houver um erro de tipo imprimir.
Ocorreu um erro de tipo.
Ento eu poderia tentar outro erro que realmente est associado abertura e escrita de arquivos.
E se voc acessar a documentao, pode chegar a erros e excees e isso explica erros de
sintaxe e excees em geral.
Mas voc notar que h um link aqui uma construo de excees que salta para a Seo 5
aqui da documentao e esta realmente uma lista de todos os diferentes tipos de excees e erros
que podem acontecer.
Ento, se voc continuar chamando, h um erro de afirmao e o erro do arquivo equivale a erros de ndice de
erros.
Alguns destes, voc pode ter visto antes do que no vimos, h erros de recurso de erros do sistema operacional
que transbordam todos os diferentes tipos de erros.
Voc pode tentar especificamente pegar.
Ento, em nosso caso, o erro que vai ocorrer quando voc est abrindo e escrevendo para arquivos que
voc no tem permisses um sistema operacional.
Errar.
E ns vamos imprimir pagar, voc tem um ar de sistema operacional, voc tambm pode dizer que eu tenho ar, dependendo da verso do python
que voc tem e ento vamos adicionar em um bloco final e isso, finalmente, o bloco sempre vai executar
no o que importa.
Ento, diga que eu sempre correi correndo isso agora mesmo e agora ns acabamos de voltar.
Eu sempre corro.
Ento, o que realmente est acontecendo aqui.
Bem, abrimos o arquivo de teste que chamamos diretamente para que todos os trabalhos significem que eu no tenho esse exceto bloco em
execuo e no tenho esse exceto bloco em execuo.
Ento, eu apenas digo, finalmente, eu imprimo.
Eu sempre corro.
Agora realmente induzir um erro ao abri-lo com o nosso. Ento, isso permisso somente leitura.
Ento, devemos ter um erro nesta linha quando tentamos escrever no arquivo.
Agora, no devemos obter um erro de tipo porque na verdade no 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 permisses de leitura.
Ento, se eu executar isso, volto.
Ei, voc tem um erro de sistema operacional.
E ao contrrio da ltima vez em que tnhamos isso, exceto que s um desses blocos vai ser
executado com a declarao final, exceto o bloco ser executado e, finalmente, o bloco ser executado.
ter impresses especficas para erros especficos onde voc poderia fazer dizer que voc tem erro de
tipo aqui e voc no queria memorizar todos os outros tipos, se voc apenas diz, exceto no final disto.
E assim que voc pode alinhar um monte de excees para
Esta ser todas as outras excees.
Ento, todas as outras excees e todas as corridas novamente.
E diz todas as outras excees porque no detectou o erro de tipo ou qualquer outro
erro que definimos.
Ento, se voc apenas diz, exceto o clon, voc imprimir esse erro.
EST BEM.
todos os tipos de erro e, provavelmente, seus blocos de cdigo apenas se parecero com isso.
Portanto, lembre-se de que voc est comeando no Python, voc provavelmente no memorizar
Experimentar.
Exceto.
E finalmente.
Ento, apenas para reiterar o bloco de tentativa de cdigo, o bloco de cdigo que voc tentar
tentar, exceto um bloco de cdigo que ocorrer quando houver um erro na sua declarao de tentativa.
E ento voc tem a opo de colocar finalmente um bloco aqui que sempre executar se h ou
no um erro ou voc pode ter um cdigo de bloco ELSE que s vai ao X-2 quando no houver um erro.
Ok, ento vamos nos concentrar nisso mais uma vez aqui.
Agora, no h, no haver nenhum erro porque eles vo dizer que estaro l.
Se eu executar isso, volto.
Eu sempre corro.
Ento, no h erro.
Finalmente, o bloco ainda executado.
Ns induzimos um erro.
Ns dizemos todas as outras excees porque eu s estou dizendo e geralmente, exceto aqui, faz o que for.
Este bloco de cdigo diz que finalmente ele faz esse bloco de cdigo.
Ento, isso finalmente bloqueia, independentemente de haver um erro, ele sempre ser executado.
Ento, vamos terminar nossa discusso aqui mostrando como usar os truques que finalmente bloqueiam dentro de uma
funo que tenta obter um tipo especfico de entrada de um usurio.
Ento, vamos fazer aqui o seguinte.
Vamos dizer que a DPF pede eu. Ento, o que essa funo faz tentar pedir ao usurio um nmero inteiro.
Ento eu direi o seguinte.
Tente resultar igual ao nmero inteiro da entrada, por favor.
Fornea o nmero e, em seguida, se tivermos um erro
aqui e vai dizer exceto e vou imprimir whoops que no um nmero.
E ento eu vou dizer finalmente imprimir e de tri, exceto por fim.
Ento eu executo isso e vamos fazer uma iterao nesta funo apenas um pouco,
mas eu vou chamar essa funo agora.
Faa o turno entrar.
Solicita-me que fornea um nmero.
converter ou transformar 20 em um nmero inteiro.
Deixe-o dar um 20 e eu s obtenho e a tentativa, exceto, finalmente, faz sentido que whoops que no seja um nmero que imprima porque conseguimos
Mas o que acontece se eu executar a clula novamente.
E agora eu dou uma palavra.
Agora eu sei que definitivamente no consigo transformar a palavra string em um nmero inteiro.
Ento, quando eu executo isso, ele diz whoops que no um nmero.
Agora temos um fim de tentativa.
Exceto por fim.
Ento, vejamos como agora podemos usar um loop de tempo continuamente fazendo isso, tente um bloco de cdigo.
E ento, exceto se houver um erro.
OK, ento, vamos ver se podemos ajustar esta funo para que
ao invs 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 cdigo com nenhuma exceo.
Ento 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 declarao 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, ento eu digo exceto whoops que no um nmero.
E ento eu vou dizer que continuar a tornar isso um pouco mais legvel.
No que diz respeito lgica do que est acontecendo, digamos que no h um erro, ento vou dizer.
Alm disso, voc pode realmente combinar Elswyth finalmente aqui.
Ento, vamos tentar este bloco de cdigo.
Se houver um erro, eu vou dizer whoops que no um nmero.
Continue em outro sentido, no h exceo.
Isso significa que o usurio forneceu um nmero inteiro.
Ento, eu direi sim.
Obrigado.
Agora eu preciso sair deste loop while.
Ento, vou dizer aqui o intervalo
que lembra que a indicao de interrupo aumenta at que esteja fechando loop, enquanto loop for loop e depois termina.
Ento termine esse loop while.
Ento, finalmente, vamos dizer e tentar, exceto por fim.
apenas faz-lo muito claro que o Prncipe sempre correr no final.
OK, ento, coloquei esses quatro blocos de cdigo dentro do nosso enquanto verdade e vamos quebrar depois
de dizer sim, obrigado e teremos uma declarao Finalmente que diz impresso e a tentativa, exceto, finalmente, e podemos
Ento, independentemente de haver um erro ou no, este ltimo bloco de cdigo sempre ser executado.
Ento, vamos executar isso, pedimos um nmero inteiro.
Vamos fornecer um nmero 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 no um nmero e a tentativa.
Finalmente, sempre vou correr no final.
Exceto que temos a verdade aqui e essa interrupo ainda no foi executada.
Ento, temos outra chance de fornecer um nmero que ir dizer.
Q Ele diz "Whoops" novamente.
pode realmente ser lanado como um nmero 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.
Ento, o que est acontecendo aqui, estamos dizendo, enquanto verdade,
tente este bloco de cdigo se houver uma exceo, faa algo e depois continue, o que significa que no h exceo.
Voc pode imprimir algum tipo de declarao e depois quebrar.
E, normalmente, voc s vai querer sair disso enquanto verdade quando no h exceo.
Ento, finalmente, se por algum motivo voc queria que algo continuasse.
Ento, uma coisa boa aqui pode ser como eu vou te perguntar de novo.
Nova linha.
Ento, esse um exemplo mais realista de por que voc diria finalmente.
Ento, se eu executar isso novamente, eles diro, fornea o nmero.
Damos a resposta errada.
Diz que o nosso nmero.
Eu vou pedir-lhe novamente, fornea um nmero e, em seguida, voc pode fornecer o nmero correto.
E diz sim.
Obrigado.
Infelizmente, vai dizer que vou te pedir novamente.
Ento, por isso que muitas vezes as pessoas no gostam de misturar mais.
E, finalmente, as declaraes, mas h a opo para
voc no caso de voc querer onde voc poderia fazer em vez de simplesmente se livrar
dessa afirmao final e quando voc um cdigo como este e voc vai dizer, fornea meu nmero.
Bem, isso no um nmero.
Voc pode continuar fazendo isso uma e outra vez at que voc
realmente fornea o nmero 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 bsico de tentar.
Exceto.
Outro.
Prximamente, vamos dar-lhe uma tarefa para testar suas novas habilidades sobre isso.
Vamos ver se eles esto.