python之_错误与异常
错误:
1)语法错误
#语法错误 def fun(): if x>0 print("****8")
结果:SyntaxError: invalid syntax
2)逻辑错误(代码可以正常运行,但是不符合业务逻辑)
#逻辑错误 def fun(x): if x>0: print("x小于0") fun(2)
3)系统错误
异常:代码在执行过程中出现的业务逻辑的漏洞,如:未考虑到一些特殊值或者边界值而产生的逻辑漏洞。测试过程中发现的bug大多都是异常导致。代码示例:
常见的异常有:
1)除0异常 (除数为0)
#异常(代码在执行过程中出现的业务逻辑问题,如一些特殊值、边界值等的处理不正确) def fun(a,b): print(a/b) fun(1/0)
结果:ZeroDivisionError: division by zero
2)名称异常 (使用了未定义的变量)
def fun(name): print(age) fun("lily")
结果:NameError: name 'age' is not defined
3)索引异常(超出元组/列表/字典/字符串定义的长度)
a=[1,2,3] print(a[3])
结果:IndexError: list index out of range
4)key键异常(引用了字典中没有的key)
dic={"name":"lily","class":1}
print(dic.pop("age"))
dic={"name":"lily","class":1}
print(dic["age"])
结果:KeyError: 'age'
5)值异常(如:将字符串强制int转换)
num="a" print(int(num))
结果:ValueError: invalid literal for int() with base 10: 'a'
6)属性异常
--------------------------------------------分割线-----------------------------------------------
异常如何避免或者捕获:
1)try:{} except:{}
def fun(a,b): try: print(a/b) except Exception as e: print(e) print("这里有异常") fun(1,0)
结果(将异常捕获并输出):
division by zero
这里有异常
2)try:{} excpte:{} else:{} finally:{}
def fun(a,b): try: print(a/b) except Exception as e: #当try语句块有异常时,这里才会执行 print(e) print("这里有异常") else: #当try语句块没有异常时,这里才会执行 print("没有异常抛出") finally: #不论try语句块是否有异常,这里都会执行(常常用于文件的关闭,避免文件打开后发生了异常,没有关闭动作,导致后面的调用出错) print("结束了!") fun(1,3)
3)手动抛出异常
def fun(age): if age>200 or age<0: raise ValueError("值错误了,请重新输入吧") else: print(f"设置的年龄为:{age}") fun(201)
4)自定义异常
class Myexception(Exception): def __init__(self): print("这里有错误") def fun(num): if num>200: raise Myexception("这里有问题") else: print("没毛病") fun(201)
浙公网安备 33010602011771号