没啥两样的错误和异常

前言

  • 在Python中错误分为语法错误和异常两个类,可以理解错误和异常是一个东西,因为在处理的时候方法都一样。出错后就会导致代码中断,无法运行。解决的方法就是使用处理异常代码块

一.处理异常

  • 处理异常的基本语法
try:
	#可能会发生异常的代码块	
except:
	#发生异常后需要执行的代码块
  • 如果能提前猜测到会出现什么异常可以加上异常类型。
try:
	#可能会发生异常的代码块	
except 异常类型:
	#发生异常后需要执行的代码块
  • 也可以把所有可能出现的异常列举出来
try:
	#可能会发生异常的代码块	
except 异常类型:
	#发生异常后需要执行的代码块
except 异常类型:
	#发生异常后需要执行的代码块
except 异常类型:
	#发生异常后需要执行的代码块
......
except Exception as e:
	print("未知错误:", e)

如果没有捕获检测到的异常,而且没有except Exception as e语句,那么系统肯定会抛出异常。有了except Exception as e语句,就会把不能提前知道的异常,也就是未知异常捕获到放到e中。
当然处理异常语法中可以如下,只有两行基本语句

try:
	#可能会发生异常的代码块
except Exception as e:
	print("未知错误:", e)
  • Exception 是所有异常类的父类,如果不能提前知道需要捕获的异常是什么,那么就可以使用Exception匹配所有可能出现的异常。

二.finally子句

  • 无论是否捕获了异常都会执行
try:
	# 检测异常
except:
	# 捕获异常后执行的代码块
finally:                #finally这个无论如何都执行的特性在数据库和文件处理中相当有作用。
	#无论如何都会执行的代码块

三.try-except-else语句

try:
	#检测异常
except:
	#捕获异常
else:
	#程序正常执行

四.抛出异常

  • 抛出异常是我们主动抛出异常,
  • 测试一种机器的时间机制,如果超过这个时间则说明机器测试失败,否则成功。
    起作用的主要是raise Exception()语句,此语句可以把用户想抛出的异常抛出。
def test(level):
    if level>5:
        raise Exception("测试失败")


try:
    test(5)
except Exception as e:
    print(e)
else:
    print("测试成功")

五.自定义异常

Python虽然有许多内置的异常类但是只能满足大部分需求,还有一些需求无法满足。这个时候就需要自定义异常了。

  • 自定义异常应该继承自Exception类,直接和间接继承都可以。
  • 异常实际上也是一个类,工作机制大概是这样的,在类中定义一个魔法方法__str__(),用于创建对象时返回一些自定义的信息,比如:在创建对象的时候,因为语法错误,触发__str__()运行,返回信息,而这些信息被raise语句捕获从而报出红色错误。通过下面的代码理解这句话
class MyException(Exception):
    def __init__(self):
        pass

    def __str__(self):
        return "这是一个自定义异常"

def raise_customer_exception():
    raise MyException()


raise_customer_exception()

六.断言

  • 断言assert用于判断一个表达式是否成立,表达式是False的时候触发异常。
  • 断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况。例如:判断是否为windows系统,如果是则执行下面的代码,如果不是则不执行。
    assert expression
    等价于
    if not expression;
    raise AssertionError
    后面还可以跟参数
    assert expression arguments
    等价于
    if not expression
    raise AssertionError(arguments)
  • 判断当前系统是都为windows系统
import sys
assert ('windows' in sys.platform)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值