我们先通过一个例子来了解代码中引入异常处理的测试常原原因。 执行结果 Traceback(most recent call last): File"C:/Users/Kevin/PycharmProjects/PyDemo/p1/exception_demo.py",想通须懂 line 4,in print(a/b) ZeroDivisionError:division by zero Start Processfinished with exit code 1 大家可以看到代码出现了问题,这个结果是试环可以预见的,但是节必End并没有成功打印,这说明了print(End)语句没有被执行,得异所以程序中一旦出现了异常,测试常原那么异常点后面的想通须懂语句是不会被执行的! 我们可以利用条件语句来解决这个问题,试环代码如下: 我们也可以通过python的节必异常处理机制来解决这个问题。在python中捕捉异常可以使用try/except语句。得异 try/except语句用来检测try语句块中的测试常原错误,从而让except语句捕获异常信息并处理。想通须懂语法:try....except的试环语法,代码如下: 运行结果 Start catch exception End 大家可以看到try中的节必代码print(a / b)出了异常被except捕获,然后执行了print("catch exception"),得异最后程序正常执行完毕! 讲到这里可能有的同学会问,明明可以用条件语句就可以解决的问题,为什么还要引入异常机制呢?最简单的解释就是,云南idc服务商用异常机制会大大的减少代码量,这个例子比较简单大家可能体会不到,在实际编码中try里面是会有很多行代码的,只要有错误那么就会被catch住!如果使用条件语句,那么就需要在多行代码中都进行判断,这个代码量可想而知! 异常的类型异常也是分种类的,处理不同类型的错误,会使用不同的异常类型,python的标准异常包括: 使用不同类别的异常无法捕获非自身种类的异常,例如使用IOError是无法捕获ZeroDivisionError的,代码如下: 运行结果 Start Traceback (most recent calllast): File"C:/Users/Kevin/PycharmProjects/PyDemo/p1/exception_demo.py", line 5,in print(a / b) ZeroDivisionError: division byzero 使用except可以带多种异常类型, try: 正常的操作 ...................... except(Exception1, Exception2,...ExceptionN): 发生以上多个异常中的一个,执行这块代码 ...................... try...except BaseExceptionas msg: 输出异常信息.例如: 输出: Start division by zero End try...except...finally该语句的含义是无论是否发生异常都将执行最后finally中的代码。示例代码如下: 输出: Start exception finally End 抛出异常raise语句允许程序员强制发生指定的香港云服务器异常。如果你需要确定是否引发了异常但不打算处理它时可以使用!例如: 运行结果 Traceback(most recent call last): File"C:/Users/Kevin/PycharmProjects/PyDemo/p1/except_demo2.py", line 7,in exp_fuc() File"C:/Users/Kevin/PycharmProjects/PyDemo/p1/except_demo2.py", line 5,in exp_fuc raise IOError OSError 可以看到代码抛出了IOError,由于没有被捕获,所以print(End)没有被执行 自定义异常程序可以通过创建新的异常类来命名它们自己的异常。异常通常应该直接或间接地从Exception类派生。 运行结果 Myexception: my error