Bienvenido de nuevo en esta conferencia vamos a discutir los errores y los errores de manejo de excepciones van
a suceder en su cdigo.
Nadie es perfecto y definitivamente van a surgir errores, especialmente cuando alguien ms termina
usando su cdigo de una manera inesperada.
Podemos usar el manejo de errores en un intento de planificar posibles errores que puedan surgir en nuestro cdigo
en el futuro.
en el archivo cuando en realidad solo se abri con el modo para leer actualmente si hay algn tipo de error
dentro de nuestros programas, todos los scripts van a detenerse y recibimos algn tipo de declaracin de error.
Por ejemplo, tal vez en alguna parte de su cdigo intente abrir el archivo para que ms tarde alguien
ms est usando su cdigo y el usuario pueda intentar escribir realmente
De hecho, podemos usar el manejo de errores para permitir que el script contine si el otro cdigo e informa el error.
Entonces, incluso si hay un error, el cdigo informar el error y continuar.
Ahora hay tres palabras clave para este proceso de manejo de excepciones.
Y es el intento, excepto.
Y, finalmente, las palabras clave y todas ellas tendrn un bloque de cdigo asociado a ellas.
de cdigo que es el bloque de cdigo que se va a intentar y esto puede o no conducir a un error.
Entonces, bajo el bloque try
Entonces, una vez que pruebe el bloque de cdigo try real si hay un error, tiene el bloque accept y este es un cdigo
de bloque que se ejecutar en caso de que haya algn error dentro de ese bloque try.
Luego tiene un bloque de cdigo final que es un bloque final de cdigo que siempre se
ejecuta independientemente de si hay una excepcin o error.
Saltemos al cuaderno y veamos algunos ejemplos de cmo usar estos bloques.
DE ACUERDO.
Comencemos viendo realmente un ejemplo de algn error que pueda ocurrir.
Imaginemos que tenemos una funcin muy simple que incluye una funcin de adicin y una y dos, y luego lo que hace solo
imprime la suma de ellas y una ms y dos que puede estar pensando que no hay problema aqu.
Solo voy a decir agregar 10 y 20 y recuperar 30.
Pero imaginemos que tiene la siguiente situacin.
Tienes alguna variable nmero uno.
Usted establece eso igual a 10.
segundo nmero que pides como entrada y digamos que el nmero dos es igual a la entrada de.
Luego tienes un montn de cdigo y ms tarde obtienes el
Por favor.
Proporcione un nmero.
Entonces nos pregunta por favor proporcione un nmero.
Decimos 20 y luego lo que terminamos haciendo es decir, bueno, djame llamar a la funcin nuevamente en el nmero 1 y
el nmero dos.
Esperemos que te des cuenta de que esto ya te va a dar un error porque recuerda recordar que cuando
llamas a la funcin de entrada 20 aqu, en realidad, hay una cadena.
Entonces, cuando ejecuto esto, dice "oye, tienes un error de tipo".
As que observe aqu que hay una excepcin especfica real que Python est tratando de
decirle sobre el tipo de error y que dice tipo de operacin no compatible como cuatro ms entero y cadena.
Bsicamente, dicindote que no puedo agregar un entero y una cadena. Puedo agregar dos enteros juntos o
puedo concatenar dos cadenas juntas, pero no puedo trabajar con estos dos tipos de datos.
Y este es un ejemplo del tipo de error que puede obtener al ejecutar su cdigo.
Y desafortunadamente digamos que quera tener una declaracin impresa.
Entonces digamos que sucedi algo
Y corro esto, esta declaracin impresa nunca va a ocurrir realmente.
Lo que va a pasar es que recibo un error.
Y ese es el final de mi guin.
No importa si tengo cientos de lneas que pasan este bloque de cdigo.
Todava obtendr este tipo de error y nada ms despus de que se va a ejecutar.
La idea detrs de las declaraciones try y accept y finally es que, incluso si alguna
vez sucede, intentaremos hacer ese bloque de cdigo.
E incluso si hay un error, podemos continuar con ms cdigo.
Entonces, cmo vamos a hacer esto?
Bueno, tenemos que probar la palabra clave colon.
Y luego tenemos el bloque de cdigo.
Este es el cdigo que quieres probar.
Entonces quiere intentar este cdigo, pero puede tener un error.
As que aqu voy a decir que el resultado es igual a 10 ms 10 vueltas atrs.
Entonces, sabemos que esto no va a inducir un error.
Y luego, lo que voy a hacer aqu es que voy a tener mi bloque de cdigo excepto.
Entonces mi bloque de cdigo es lo que quiero que ocurra si hay un error y esto es realmente comn.
Cuando construyes bibliotecas ms grandes que otras personas van a usar, puedes tener bloque
excepto para que puedas imprimir un mensaje ms especfico para el usuario.
Entonces quizs puedas decir "Hey, parece que no ests agregando correctamente".
As que voy a ejecutar esto y esto.
En realidad no inducimos aire.
En su lugar, puedo llamar a los resultados aqu sin ningn problema, ya que tiene sentido porque Templeton no tiene problemas.
Ahora realmente creemos ese aire.
Voy a tratar de agregar el nmero entero 10 a la cadena 10 aqu.
Ahora cuando ejecuto esto, dice "Hey, parece que no ests agregando correctamente".
Ahora note lo que sucedi aqu.
El resto del bloque de cdigo an se poda ejecutar con la declaracin de aceptacin. Mi programa completo
no se cerr solo porque tena algn tipo de error como antes.
En cambio, prob este bloque de cdigo y luego dije excepto, y en general aqu puedo decir, excepto si
hay algn tipo de error, haga este cdigo aqu mismo.
Ahora imaginemos que quiero que se ejecute un bloque de cdigo si no hay excepciones.
Podra hacer algo como esto.
Puedo decir.
Los resultados de Else Prince y ms arriba puedo decir que Prince Ad fue bien.
As que ahora cuando ejecuto esto solo dice "Hey, parece que no ests codificando correctamente".
Entonces esto se conoce como un intento.
Excepto.
Otra declaracin
Y lo que tenemos aqu es el bloque de cdigo que vamos a probar.
Y luego tenemos dos opciones.
Si hay un error en ese bloque try, ejecutamos el cdigo excepto else.
Si no hay error, ejecutamos esto.
Otro cdigo
As que arreglemos esto y no produzcamos un error ms.
Nosotros ejecutamos esto
Intentamos este bloque de cdigo ya que fue exitoso.
No ejecutamos esto excepto el bloque de cdigo.
En su lugar, saltamos directamente a lo dems y decimos que el anuncio sali bien y tenemos 20.
DE ACUERDO.
Entonces intentemos.
Excepto.
De lo contrario, ahora podemos usar la palabra clave finally para tener un bloque de cdigo.
Siempre ejecutndose.
Independientemente de si hay un error.
Entonces el show esto voy a construir a partir de un ejemplo donde realmente intentamos escribir algunos archivos.
Exploremos este concepto de intentar, excepto
Y finalmente, trabajando en un nuevo ejemplo y en este ejemplo vamos a tratar de abrir un archivo para tener
un archivo de prueba y vamos a comenzar abriendo en modo W.
Ese es el modo correcto que nos permite abrir el archivo y escribir en l o crear
el archivo si an no existe.
Y luego dir F ese derecho y voy a escribir una lnea de prueba para este archivo y luego dir
excepto y aqu puedo decir excepto dos puntos y eso va a Excepto cualquier error.
tipos de errores que puedo especficamente, excepto por ejemplo, puedo intentar solo a excepcin de este tipo de error.
Pero en realidad hay muchos
Entonces, lo que sucede es notable.
Tuvimos este tipo de error especfico.
Lo que podra hacer es decir solo si hay un error de tipo imprimir.
Hubo un error de tipo.
Entonces podra intentar otro error que est realmente asociado a la apertura y escritura de archivos.
Y si va a la documentacin, puede encontrar errores y excepciones, y esto explica los errores de sintaxis
y las excepciones en general.
Pero notar que hay un enlace aqu, que est integrado en excepciones, que salta a la Seccin 5 aqu
de la documentacin y esta es en realidad una lista de todos los diferentes tipos de excepciones y
errores que pueden ocurrir.
Entonces, si contina llamando hay un error de asercin y el error de archivo importa errores de ndice de
errores.
Algunos de ellos pueden haber visto antes mucho de lo que no hemos visto all. Errores de SO. Los errores de
recursin desbordan todos los diferentes tipos de errores.
Puedes intentar atrapar especficamente.
Entonces, en nuestro caso, el error que se producir al abrir y escribir en archivos a
los que no tienes permiso es un SO.
Errar.
Y vamos a imprimir pagar, tienes aire de sistema operativo, tambin puedes decir que tengo aire, dependiendo de la versin de python
que tengas, y luego vamos a agregar un bloque final y este bloque finalmente siempre se ejecutar
sin importa que.
Entonces, digo que siempre corro para ejecutar esto ahora y ahora mismo solo volvemos.
Siempre corro
Entonces, qu est pasando realmente aqu?
Bueno, abrimos el archivo de prueba que llamamos directamente para que todo funcione, lo que significa que no tengo este, excepto que se est ejecutando el
bloque y no tengo este, excepto el bloque en ejecucin.
Entonces digo que finalmente imprimo.
Siempre corro
Ahora, en realidad, es un error al abrirlo con nuestro permiso So that's only read.
Entonces deberamos obtener un error en esta lnea cuando intentemos escribir en el archivo.
Ahora no deberamos obtener un tipo de error porque ese no es realmente el error que estamos obteniendo.
En cambio, deberamos obtener un error de SO porque ese es el error relacionado con intentar escribir en un archivo para
el que solo tiene permisos de lectura.
Entonces, si ejecuto esto, vuelvo.
Oye, tienes un error de SO.
Y a diferencia de la ltima vez que tuvimos esto, excepto que estamos solo uno de estos bloques se ejecutar
con la instruccin finally, excepto que el bloque se ejecutar y luego se ejecutar el bloque finally.
las cosas especficas se impriman para errores especficos donde podras hacer es decir que tienes un error
de tipo aqu y no queras memorizar todos los otros tipos si solo dijeras excepto al final de esto.
Y as es como puedes alinear una serie de excepciones para que
Esta va a ser todas las dems excepciones.
Entonces todas las otras excepciones y cada corrida otra vez.
Y dice todas las dems excepciones porque no detect el error de tipo o cualquier otro error
que hayamos definido.
Entonces si solo dices excepto dos puntos, imprimirs ese error.
DE ACUERDO.
memorizar todos los tipos de errores y probablemente sus bloques de cdigo se vean as.
As que tenga en cuenta que, al comenzar en Python, probablemente no
Tratar.
Excepto.
Y finalmente.
Entonces, para reiterar que el bloque de prueba de cdigo es el bloque de cdigo que intentar
intentar, salvo que se producir un bloqueo de cdigo cuando haya un error en su declaracin try.
Y luego tiene la opcin de poner un bloque finally aqu que siempre se ejecutar si hay un
error o no, o puede tener un cdigo de bloque ELSE que solo va a X-2 cuando no hay un error.
De acuerdo, vamos a centrarnos en esto una vez ms aqu.
En este momento no hay ningn error, porque dirn que estarn all.
Si ejecuto esto, vuelvo.
Siempre corro
Entonces no hay error
Finalmente el bloque todava se ejecuta.
Inducimos un error
Decimos todas las dems excepciones porque solo digo y generalmente, excepto aqu, hace lo que sea.
Este bloque de cdigo dice que finalmente hace este bloque de cdigo.
As que esto finalmente bloquea, independientemente de si hay un error, siempre se ejecutar.
As que terminemos nuestra discusin aqu mostrndole cmo usar los trucos que finalmente bloquea dentro de una
funcin que intenta obtener un tipo especfico de entrada de un usuario.
As que vamos a hacer aqu es lo siguiente.
Diremos que DPF pregunte por a. Entonces, lo que hace esta funcin es intentar pedirle al usuario un nmero entero.
Entonces dir lo siguiente.
Trate de obtener el resultado igual al nmero entero de la entrada, por favor.
Proporcione el nmero y luego si recibimos un error aqu y
vamos a decir, excepto y voy a imprimir whoops que no es un nmero.
Y luego dir finalmente print y de tri, excepto finalmente.
As que ejecuto esto y vamos a iterar en esta funcin solo un poco, pero voy
a llamar a esta funcin ahora mismo.
Cambie de entrada.
Me pide que por favor proporcione un nmero.
convertir o transformar 20 en un nmero entero.
Dmosle uno 20 y me acabo de dar el intento, pero finalmente tiene sentido que grite que no es un nmero que se imprime porque pudimos
Pero, qu ocurre si vuelvo a ejecutar la clula?
Y ahora les doy una palabra.
Ahora s que definitivamente no puedo transformar la palabra de cuerdas en un entero.
Entonces cuando ejecuto esto, dice whoops que no es un nmero.
Ahora tenemos un final de prueba.
Excepto finalmente.
Entonces veamos cmo ahora podemos usar un ciclo while para hacer continuamente este bloque de cdigo try.
Y luego, excepto si hay un error all.
OK, veamos si podemos ajustar esta funcin para que en lugar
de simplemente terminar despus de proporcionar la palabra incorrecta, la ubiquemos dentro de un ciclo while que
se repita una y otra vez hasta que tengamos un bloque de cdigo con sin excepcin.
As que lo har mientras sea cierto y siempre debes tener cuidado al hacerlo.
Es cierto porque bsicamente significa que necesita utilizar una declaracin de interrupcin
en algn lugar para salir de este ciclo while.
Voy a sangrar todo esto resaltado en la pestaa de todos los tocados aqu y voy a decir salvaje verdad.
Obtenga este resultado como la entrada, entonces digo excepto whoops que no es un nmero.
Y luego voy a decir que continen haciendo esto un poco ms legible.
En cuanto a la lgica de lo que est sucediendo ahora, digamos que no hay un error, entonces voy a decir.
De lo contrario, puedes combinar Elswyth finalmente aqu.
Entonces vamos a probar este bloque de cdigo.
Si hay un error, voy a decir whoops que no es un nmero.
Contina en else, lo que significa que no hay excepcin.
Eso significa que el usuario proporcion un nmero entero.
Entonces dir que s.
Gracias.
Ahora necesito salir de este ciclo while.
As que dir aqu break, que
recuerda que la sentencia de break va hasta su ciclo de bucle, ya sea en bucle para bucle y luego lo finaliza.
As que termine este ciclo while.
Entonces finalmente diremos y probaremos, excepto finalmente.
podemos hacerlo muy claro que el Prncipe I siempre correr al final.
OK, as que simplemente ponemos estos cuatro bloques de cdigo dentro de nuestro mientras que es cierto y vamos a
romper una vez que decimos s, gracias y tendremos una declaracin final que dice imprimir y probar, excepto finalmente, y
Entonces, independientemente de si hay un error o no, este bloque de cdigo finalmente siempre se ejecutar.
As que vamos a ejecutar esto, pediremos un nmero entero.
Proporcionemos un nmero entero correcto le diremos 20 presione enter.
Dice que s.
Gracias.
Y el intento, excepto finalmente, siempre correr al final.
Proporcionmoslo.
Una cadena dir q presione enter y dice whoops.
Eso no es un nmero y el intento.
Finalmente, siempre correr al final.
Excepto que tenemos verdad aqu y este descanso an no se ha ejecutado.
As que tenemos otra oportunidad de proporcionar un nmero que dir.
Q Dice Whoops nuevamente.
que realmente pueda emitirse como un nmero entero.
Y puede seguir proporcionndole una y otra vez las cosas incorrectas y seguir pidindole su opinin hasta que finalmente proporcione algo que pueda conservarse y
Usted dice 90 y dice que s.
Gracias.
Y el intento, excepto Finalmente, siempre estar justo al final.
Entonces, qu est pasando aqu? Estamos diciendo que si bien
es cierto, pruebe este bloque de cdigo si hay una excepcin haciendo algo y luego contine, lo que significa que no hay excepcin.
Puede imprimir algn tipo de declaracin y luego romper.
Y, por lo general, solo querr salir de esto siendo cierto cuando no haya excepciones.
Entonces, finalmente, si por alguna razn quieres que algo contine.
As que algo bueno aqu podra ser como si fuera a preguntarte de nuevo.
Nueva lnea.
Entonces ese es un ejemplo ms realista de por qu diras finalmente.
Entonces, si ejecuto esto de nuevo, me dirn que proporcionen el nmero.
Le damos la respuesta incorrecta.
Dice que es nuestro nmero.
Voy a volver a preguntarte, por favor ingresa un nmero y luego puedes proporcionarle el nmero correcto.
Y dice que s.
Gracias.
Lamentablemente, va a decir que voy a preguntarte de nuevo.
Entonces, es por eso que muchas veces a las personas no les gusta mezclar otras cosas.
Y finalmente las declaraciones, pero existe la opcin para
ti en caso de que lo desees, donde podras hacer, en lugar de solo deshacerte de
esa declaracin final, y cuando tengas un cdigo como este y dices, por favor proporciona mi nmero.
P Bueno, eso no es un nmero.
Puede seguir hacindolo una y otra vez hasta que realmente proporcione el
nmero y le diga que s. Creo que depende de usted si desea mezclar finalmente los bloques de Elsin, pero puede hacerlo si lo desea.
Todo bien.
Eso es lo bsico de intentarlo.
Excepto.
Ms.
Prximamente vamos a darte una tarea para probar tus nuevas habilidades en esto.
Veremos si lo son.