python——异常机制

1、例1

try:

    int1=int(input('请输入一个数字: '))

    print(1/int1)

except ZeroDivisionError:

    print('0不能作为分母')

except ValueError:

    print('您输入的不是数字')

except:

    print('程序出现错误')

※意义:用户友好;继续执行

※try except 语句中,至少有一个except,也可多个

ValueError:输入非数字的异常

ZeroDivisionError:0作为分母的异常

※兜底:不指定异常类型,捕捉任何异常

except:

    print('程序出现错误')

2、希望:当程序没有出现异常,执行else中语句

if else

try except else

for else.while else

else:

    print('没有出现异常')

3、无论程序有没有出现异常,都会执行

finally:

    print('程序结束')

4、总结:

※常见的异常

NameError:未定义的变量

IndexErro:下标越界

FileNotFoundError:找不到文件异常

※所有的异常,都是Exception的子类,或者子类的子类

Exception也有一个父类,是BaseException

5、手动抛出异常

※复现

※raise 关键字

try:

    raise IOError  假装这里有异常

except IOError:

    print('程序出现了IO错误')

6、将异常输出到日志中

※.log文件

※五大模块

import logging

logging.debug(1)

logging.info(2)

logging.warning(3)

logging.error(4)

logging.critical(5)

※默认只记3,4,5

※记录详细程度提高到debug

※大写

import logging

logging.basicConfig(level='DEBUG')

logging.debug(1)

logging.info(2)

logging.warning(3)

logging.error(4)

logging.critical(5) 崩溃

※日志计入文件中

import logging

logging.basicConfig(level='DEBUG',filename='E:\\python\\test\\log1.log',filemode='a+')

logging.debug(1)

logging.info(2)

logging.warning(3)

logging.error(4)

logging.critical(5)

※将异常写入文件

import logging

import traceback

logging.basicConfig(level='DEBUG',filename='E:\\python\\test\\log1.log',filemode='a+')

try:

    int1=int(input('请输入一个数字: '))

    print(1/int1)

except ZeroDivisionError:

    logging.error(traceback.format_exc())

except ValueError:

    logging.error(traceback.format_exc())

※加时间模块

import logging

import traceback

import time

logging.basicConfig(level='DEBUG',filename='E:\\python\\test\\log1.log',filemode='a+')

try:

    int1=int(input('请输入一个数字: '))

    print(1/int1)

except ZeroDivisionError:

    logging.error(time.strftime('%y-%m-%d %H:%M:%S')+traceback.format_exc())

except ValueError:

    logging.error(time.strftime('%y-%m-%d %H:%M:%S')+traceback.format_exc())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值