Què és un error?
En llenguatges de programació, si executem algun codi de manera no vàlida, l'execució del programa s'aturarà amb un missatge i aquest missatge s'anomena error o excepció. Hi ha certs tipus d'errors en un llenguatge de programació per diferents motius. Alguns d'ells són els següents:
AssertionError:
Aquest tipus d'error es produeix quan les condicions d'asserció o declaracions fallen en el codi.
Error d'importació:
Aquest error es produeix quan importem algun mòdul al fitxer i si aquest mòdul no existeix.
IndexError:
Es produeix quan, per a qualsevol seqüència, el seu índex està fora de l'interval.
KeyError:
Aquest error es genera a Python quan no trobem cap clau al diccionari.
NameError:
Aquest error es pot produir quan no trobem cap variable en l'àmbit local o global.
Error d'execució:
Aquest error es generarà quan l'error no es pugui classificar en cap tipus.
IndentationError:
Quan utilitzem el sagnat incorrecte al codi de Python, es produirà IndentationError.
Error del sistema:
Quan hi ha un error intern, l'intèrpret generarà SystemError.
UnicodeError:
Quan hi ha un error de codificació o descodificació relacionat amb Unicode, es generarà UnicodeError.
ValueError:
Quan estem en una funció, passem l'argument correcte segons el tipus de dades, però el valor no és correcte, aleshores l'error que s'ha produït s'anomena ValueError.
ZeroDivisionError:
Com sabem, en matemàtiques, no podem dividir cap nombre per zero perquè el resultat tendeix a l'infinit. Per tant, si hem escrit alguna declaració sobre la divisió per zero o mòdul per zero, l'error generat serà ZeroDivisionError.
EOFError:
Quan utilitzem la funció input() per obtenir l'entrada d'un fitxer, i arribem al final del fitxer, es generarà aquest error per indicar que hem arribat al final del fitxer i ara no podem agafar cap entrada del fitxer.
Aquest article està dedicat principalment a AttributeError.
Què és AttributeError?
Aquest error es produeix al programa quan hi ha un error de condicionament en l'assignació d'atributs. Per exemple, si assignem un valor a una variable entera i si intentem utilitzar qualsevol funció de cadena d'aquesta variable, llavors generarà l'AttributeError.
Podem entendre el motiu d'AttributeError a Python amb els exemples següents:
Exemple 1:
Quan apliquem una funció a un tipus de dades diferent que no és possible
a=15 a.append('javatpoint')
Sortida:
Explicació:
Al codi anterior, tenim una variable entera, i l'hem inicialitzada amb el valor 15. Ara, si fem servir la funció append a la variable a, donarà l'AttributeError, que diu que no hi ha cap atribut com append. en el tipus de dades enter.
Exemple 2:
Hi ha possibilitats d'AttributeError en l'ortografia incorrecta de l'atribut.
string = 'you will learn each coding tutorial from '.fst('Javatpoint') print(string)
Sortida:
Explicació:
Al codi anterior, tenim un atribut de cadena i apliquem l'atribut fst, de manera que hi haurà AttributeError que aquest atribut no existeix per a la variable.
Powershell comentari multilínia
Exemple 3:
Podem obtenir l'AttributeError si intentem fer una referència incorrecta per a qualsevol variable de classe.
class Javatpoint(): def __init__(self): self.var1 = 'This is for JavatPoint' obj = Javatpoint() print(obj.var1) print(obj.var2)
Sortida:
Explicació:
Al codi anterior, tenim una classe i hi ha una variable anomenada var1. Creem l'objecte de la classe i, per error, fem referència a la variable var2 incorrecta d'aquesta classe que fins i tot no existeix, de manera que definitivament hi haurà un AttributeError.
La solució per abordar l'error o l'excepció:
En Python o en qualsevol llenguatge de programació, podem utilitzar el maneig d'excepcions o errors utilitzant sentències try i except.
Exemple 4:
class Javatpoint(): def __init__(self): self.var1 = 'This is for javatpoint' obj = Javatpoint() try: print(obj.var1) print(obj.var2) except AttributeError: print('There is no such attribute')
Sortida:
Explicació:
Al codi anterior, tenim una classe i una variable anomenada var1. A la instrucció try, intentem fer referència a var1 i var2. Podrem desreferenciar la var1 i imprimirem la instrucció, però obtindrem l'AttributeError per fer referència a la var2. Per tant, el programa entrarà al bloc excepte i imprimirem la instrucció, que només s'escriu per a la condició d'error.