Bienvenido de nuevo en esta conferencia vamos a discutir los errores y los errores de manejo de excepciones van
a suceder en su código.
Nadie es perfecto y definitivamente van a surgir errores, especialmente cuando alguien más termina
usando su código de una manera inesperada.
Podemos usar el manejo de errores en un intento de planificar posibles errores que puedan surgir en nuestro código
en el futuro.
en el archivo cuando en realidad solo se abrió con el modo para leer actualmente si hay algún tipo de error
dentro de nuestros programas, todos los scripts van a detenerse y recibimos algún tipo de declaración de error.
Por ejemplo, tal vez en alguna parte de su código intente abrir el archivo para que más tarde alguien
más esté usando su código y el usuario pueda intentar escribir realmente
De hecho, podemos usar el manejo de errores para permitir que el script continúe si el otro código e informa el error.
Entonces, incluso si hay un error, el código 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 tendrán un bloque de código asociado a ellas.
de código que es el bloque de código 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 código try real si hay un error, tiene el bloque accept y este es un código
de bloque que se ejecutará en caso de que haya algún error dentro de ese bloque try.
Luego tiene un bloque de código final que es un bloque final de código que siempre se
ejecuta independientemente de si hay una excepción o error.
Saltemos al cuaderno y veamos algunos ejemplos de cómo usar estos bloques.
DE ACUERDO.
Comencemos viendo realmente un ejemplo de algún error que pueda ocurrir.
Imaginemos que tenemos una función muy simple que incluye una función de adición y una y dos, y luego lo que hace solo
imprime la suma de ellas y una más 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 situación.
Tienes alguna variable número uno.
Usted establece eso igual a 10.
segundo número que pides como entrada y digamos que el número dos es igual a la entrada de.
Luego tienes un montón de código y más tarde obtienes el
Por favor.
Proporcione un número.
Entonces nos pregunta por favor proporcione un número.
Decimos 20 y luego lo que terminamos haciendo es decir, bueno, déjame llamar a la función nuevamente en el número 1 y
el número dos.
Esperemos que te des cuenta de que esto ya te va a dar un error porque recuerda recordar que cuando
llamas a la función 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 excepción específica real que Python está tratando de
decirle sobre el tipo de error y que dice tipo de operación no compatible como cuatro más entero y cadena.
Básicamente, diciéndote 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 código.
Y desafortunadamente digamos que quería tener una declaración impresa.
Entonces digamos que sucedió algo
Y corro esto, esta declaración impresa nunca va a ocurrir realmente.
Lo que va a pasar es que recibo un error.
Y ese es el final de mi guión.
No importa si tengo cientos de líneas que pasan este bloque de código.
Todavía obtendré este tipo de error y nada más después de que se va a ejecutar.
La idea detrás de las declaraciones try y accept y finally es que, incluso si alguna
vez sucede, intentaremos hacer ese bloque de código.
E incluso si hay un error, podemos continuar con más código.
Entonces, ¿cómo vamos a hacer esto?
Bueno, tenemos que probar la palabra clave colon.
Y luego tenemos el bloque de código.
Este es el código que quieres probar.
Entonces quiere intentar este código, pero puede tener un error.
Así que aquí voy a decir que el resultado es igual a 10 más 10 vueltas atrás.
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 código excepto.
Entonces mi bloque de código es lo que quiero que ocurra si hay un error y esto es realmente común.
Cuando construyes bibliotecas más grandes que otras personas van a usar, puedes tener bloque
excepto para que puedas imprimir un mensaje más específico para el usuario.
Entonces quizás puedas decir "Hey, parece que no estás 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 ningún problema, ya que tiene sentido porque Templeton no tiene problemas.
Ahora realmente creemos ese aire.
Voy a tratar de agregar el número entero 10 a la cadena 10 aquí.
Ahora cuando ejecuto esto, dice "Hey, parece que no estás agregando correctamente".
Ahora note lo que sucedió aquí.
El resto del bloque de código aún se podía ejecutar con la declaración de aceptación. Mi programa completo
no se cerró solo porque tenía algún tipo de error como antes.
En cambio, probé este bloque de código y luego dije excepto, y en general aquí puedo decir, excepto si
hay algún tipo de error, haga este código aquí mismo.
Ahora imaginemos que quiero que se ejecute un bloque de código si no hay excepciones.
Podría hacer algo como esto.
Puedo decir.
Los resultados de Else Prince y más arriba puedo decir que Prince Ad fue bien.
Así que ahora cuando ejecuto esto solo dice "Hey, parece que no estás codificando correctamente".
Entonces esto se conoce como un intento.
Excepto.
Otra declaración
Y lo que tenemos aquí es el bloque de código que vamos a probar.
Y luego tenemos dos opciones.
Si hay un error en ese bloque try, ejecutamos el código excepto else.
Si no hay error, ejecutamos esto.
Otro código
Así que arreglemos esto y no produzcamos un error más.
Nosotros ejecutamos esto
Intentamos este bloque de código ya que fue exitoso.
No ejecutamos esto excepto el bloque de código.
En su lugar, saltamos directamente a lo demás 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 código.
Siempre ejecutándose.
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 aún no existe.
Y luego diré F ese derecho y voy a escribir una línea 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 específicamente, excepto por ejemplo, puedo intentar solo a excepción de este tipo de error.
Pero en realidad hay muchos
Entonces, lo que sucede es notable.
Tuvimos este tipo de error específico.
Lo que podría hacer es decir solo si hay un error de tipo imprimir.
Hubo un error de tipo.
Entonces podría intentar otro error que esté realmente asociado a la apertura y escritura de archivos.
Y si va a la documentación, 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 Sección 5 aquí
de la documentación y esta es en realidad una lista de todos los diferentes tipos de excepciones y
errores que pueden ocurrir.
Entonces, si continúa llamando hay un error de aserción 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
recursión desbordan todos los diferentes tipos de errores.
Puedes intentar atrapar específicamente.
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, también puedes decir que tengo aire, dependiendo de la versión 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 ejecución.
Entonces digo que finalmente imprimo.
Siempre corro
Ahora, en realidad, es un error al abrirlo con nuestro permiso So that's only read.
Entonces deberíamos obtener un error en esta línea cuando intentemos escribir en el archivo.
Ahora no deberíamos obtener un tipo de error porque ese no es realmente el error que estamos obteniendo.
En cambio, deberíamos 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 instrucción finally, excepto que el bloque se ejecutará y luego se ejecutará el bloque finally.
las cosas específicas se impriman para errores específicos donde podrías hacer es decir que tienes un error
de tipo aquí y no querías 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 demás excepciones.
Entonces todas las otras excepciones y cada corrida otra vez.
Y dice todas las demás excepciones porque no detectó el error de tipo o cualquier otro error
que hayamos definido.
Entonces si solo dices excepto dos puntos, imprimirás ese error.
DE ACUERDO.
memorizará todos los tipos de errores y probablemente sus bloques de código 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 código es el bloque de código que intentará
intentar, salvo que se producirá un bloqueo de código cuando haya un error en su declaración try.
Y luego tiene la opción de poner un bloque finally aquí que siempre se ejecutará si hay un
error o no, o puede tener un código de bloque ELSE que solo va a X-2 cuando no hay un error.
De acuerdo, vamos a centrarnos en esto una vez más aquí.
En este momento no hay ningún error, porque dirán que estarán allí.
Si ejecuto esto, vuelvo.
Siempre corro
Entonces no hay error
Finalmente el bloque todavía se ejecuta.
Inducimos un error
Decimos todas las demás excepciones porque solo digo y generalmente, excepto aquí, hace lo que sea.
Este bloque de código dice que finalmente hace este bloque de código.
Así que esto finalmente bloquea, independientemente de si hay un error, siempre se ejecutará.
Así que terminemos nuestra discusión aquí mostrándole cómo usar los trucos que finalmente bloquea dentro de una
función que intenta obtener un tipo específico 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 función es intentar pedirle al usuario un número entero.
Entonces diré lo siguiente.
Trate de obtener el resultado igual al número entero de la entrada, por favor.
Proporcione el número y luego si recibimos un error aquí y
vamos a decir, excepto y voy a imprimir whoops que no es un número.
Y luego diré finalmente print y de tri, excepto finalmente.
Así que ejecuto esto y vamos a iterar en esta función solo un poco, pero voy
a llamar a esta función ahora mismo.
Cambie de entrada.
Me pide que por favor proporcione un número.
convertir o transformar 20 en un número entero.
Démosle uno 20 y me acabo de dar el intento, pero finalmente tiene sentido que grite que no es un número que se imprime porque pudimos
Pero, ¿qué ocurre si vuelvo a ejecutar la célula?
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 número.
Ahora tenemos un final de prueba.
Excepto finalmente.
Entonces veamos cómo ahora podemos usar un ciclo while para hacer continuamente este bloque de código try.
Y luego, excepto si hay un error allí.
OK, veamos si podemos ajustar esta función para que en lugar
de simplemente terminar después 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 código con sin excepción.
Así que lo haré mientras sea cierto y siempre debes tener cuidado al hacerlo.
Es cierto porque básicamente significa que necesita utilizar una declaración de interrupción
en algún lugar para salir de este ciclo while.
Voy a sangrar todo esto resaltado en la pestaña 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 número.
Y luego voy a decir que continúen haciendo esto un poco más legible.
En cuanto a la lógica 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 código.
Si hay un error, voy a decir whoops que no es un número.
Continúa en else, lo que significa que no hay excepción.
Eso significa que el usuario proporcionó un número 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 Príncipe I siempre correrá al final.
OK, así que simplemente ponemos estos cuatro bloques de código dentro de nuestro mientras que es cierto y vamos a
romper una vez que decimos sí, gracias y tendremos una declaración final que dice imprimir y probar, excepto finalmente, y
Entonces, independientemente de si hay un error o no, este bloque de código finalmente siempre se ejecutará.
Así que vamos a ejecutar esto, pediremos un número entero.
Proporcionemos un número entero correcto le diremos 20 presione enter.
Dice que sí.
Gracias.
Y el intento, excepto finalmente, siempre correré al final.
Proporcionémoslo.
Una cadena dirá q presione enter y dice whoops.
Eso no es un número y el intento.
Finalmente, siempre correré al final.
Excepto que tenemos verdad aquí y este descanso aún no se ha ejecutado.
Así que tenemos otra oportunidad de proporcionar un número que dirá.
Q Dice Whoops nuevamente.
que realmente pueda emitirse como un número entero.
Y puede seguir proporcionándole una y otra vez las cosas incorrectas y seguirá pidiéndole su opinión 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 código si hay una excepción haciendo algo y luego continúe, lo que significa que no hay excepción.
Puede imprimir algún tipo de declaración y luego romper.
Y, por lo general, solo querrá salir de esto siendo cierto cuando no haya excepciones.
Entonces, finalmente, si por alguna razón quieres que algo continúe.
Así que algo bueno aquí podría ser como si fuera a preguntarte de nuevo.
Nueva línea.
Entonces ese es un ejemplo más realista de por qué dirías finalmente.
Entonces, si ejecuto esto de nuevo, me dirán que proporcionen el número.
Le damos la respuesta incorrecta.
Dice que es nuestro número.
Voy a volver a preguntarte, por favor ingresa un número y luego puedes proporcionarle el número 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 opción para
ti en caso de que lo desees, donde podrías hacer, en lugar de solo deshacerte de
esa declaración final, y cuando tengas un código como este y dices, por favor proporciona mi número.
P Bueno, eso no es un número.
Puede seguir haciéndolo una y otra vez hasta que realmente proporcione el
número 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 básico de intentarlo.
Excepto.
Más.
Próximamente vamos a darte una tarea para probar tus nuevas habilidades en esto.
Veremos si lo son.