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)
posted @ 2021-03-15 23:39  Brynaaa_111  阅读(79)  评论(0)    收藏  举报