错误与异常

错误
语法错误也称编译错误,拼写错误等导致编译器无法将源代码转换为字节码
逻辑错误是程序可以执行(本身不报错)但执行结果不正确,需要根据结果来调试判断

异常
没有语法错误的前提下,在运行期间产生特定的错误
每个特定错误都对应到一个异常类对象,当发生某个特定错误时,其对应的异常类对象的实例对象会被输出
如果在程序对抛出的异常不进行捕获和处理,程序就会终止,并打印错误信息,包括
Traceback:异常调用堆栈的跟踪信息,流出了程序中的相关行数
对应的异常类对象的名称以及异常的错误信息
内置的异常类对象和自定义的异常类对象对应的错误会被看作异常
经常遇到的是exception
?Exception
异常处理
try…except…else…finally

try:可能异常的代码
except:异常后怎么处理


try:
    r = 1/0
    print(r)
except ArithmeticError:
    print('数字异常')#父类 可捕获子类异常
    
try:
    r = 1/0
    print(r)
except ArithmeticError:
    print('数字异常')
except ZeroDivisionError:
    print('0错误')
    

try:
    r = 1/0
    print(r)
except ZeroDivisionError:
    print('0错误')
    
except ArithmeticError:
    print('数字异常')

在这里插入图片描述
当多个异常类对象对应的异常处理代码完全相同时,把异常类对象以元组形式放在一个exceot中

try:
    r = 1/0
    print(r)
except (TypeError,ZeroDivisionError,ValueError):
    print('运行错误')

如果想在匹配的except子句中访问异常实例对象,可加as + 变量

try:
    r = 1/0
    print(r)
except ZeroDivisionError as e: 
    print('type(e)')
    print(e)

try没有产生异常的时候就会运行else
finally总会执行的话

raise 手动抛出异常实例对象

raise ZeroDivisionError('0不能作为除数')
raise Warning('大胆')

在这里插入图片描述
如果在except中不想对异常实例对象进行处理,可以使用raise手动抛出另一个异常

try:
    raise ZeroDivisionError('0不能作为除数')
except:
    raise Warning('大胆')
    
    
class MyException(Exception):
    pass
raise (MyException)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值