python(16)异常 Exception

1、语法错误及异常 exception

语法错误 例如:

number = 100
def func():
    global number   #添加报错解决
    number += 1  #报红色波浪线

 

2、异常: 程序运行的时候报出来的:xxxError

例如:除数不能为0异常

def devide(a, b):
    return a / b
devide(1, 0)  #ZeroDivisionError: division by zero  除数为0

 

3、异常处理的格式

try:

    可能出现异常的代码

except:

    如果有异常执行的代码

else:

    没有出现异常执行的代码

[finally:

    无论是否存在异常,都会被执行的代码]

 

分为4中情况:

情况1:

try:

    有可能会产生多种异常

except 异常类型1:

    print(...)

except 异常类型2:

    print(...)

except Exception:  Exception需要放到最后一位

    print(...)

如果是多个Except,异常类型的顺序需要注意,最大的Exception放到最下方

 

情况2:

try:

    有可能会产生多种异常

except Exception as err:

    print(err)  --->err的内容是错误的原因

 

情况3:

try:

    pass

except Exception as err:

    print(err)

else:       --->没有异常才会执行的代码块

    print(...)

 

情况4:

文件操作  stream = open(filename, mode)  stream.read()  stream.close()

数据库操作 close()

无论是否有错误,都释放资源

try:

    pass

except:

    pass

finally:  --->无论是否报出异常,均会执行

    pass

 

有finally在,执行完finally中代码后才return

 

例子:

def cus_devision():
    try:
        n1 = int(input("第一个数字:"))
        n2 = int(input("第二个数字:"))
        #加法
        result = n1 / n2
        print("{} / {} = {}".format(n1, n2, result))

        list1 = []
        list1.pop()    --->pop from empty list --->从空列表中删除内容

    except Exception as err:
        print(err)
cus_devision()
def read_stream():
    stream = None
    try:
        stream = open(r'D:\JY\test5\aaaa.txt', 'r')
        container = stream.read()
        print(container)
    except Exception as err:
        print(err)
    finally:
        print("---finally---")
        if stream:
            stream.close()
read_stream()

 

4、异常抛出 raise

例:注册  用户名必须6位

def register():
    username = input("请输入用户名:")
    if len(username) < 6:
        #抛出异常
        raise Exception('用户名必须大于6位')
    else:
        print("用户名为:", username)
    
try:
    register()
except Exception as err:
    print(err)
    print("注册失败!")
else:
    print("注册成功!")

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值