python中的异常

本文详细介绍了Python中的错误和异常,包括错误和异常的区别,以及如何使用try...except...else...finally进行异常处理。通过实例展示了不同情况下的异常捕获和程序流程控制,同时列举了常见的Python异常类型,如ZeroDivisionError、ValueError等。
摘要由CSDN通过智能技术生成

bug分为错误(error)和异常(exception)

 附:

#print前面少了 : if True    print("hello python")

#0 是不能作为被除数的a  = 5b = 0print(a/b)
#执行结果:ZeroDivisionError: division by zero

 

一、try...except...

try:
  可能引发异常的代码
except:
except 错误或异常的种类:
except ZeroDivisionError:
except ValueError:
except NameError:
  捕捉异常的信息,处理异常的代码
  

try 语句的工作方式为:

  • 首先,执行 try 子句 (在 try 和 except 关键字之间的部分);

  • 如果没有异常发生, except 子句 在 try 语句执行完毕后就被忽略了;

  • 如果在 try 子句执行过程中发生了异常,那么该子句其余的部分就会被忽略;

  • 如果异常匹配于 except 关键字后面指定的异常类型,就执行对应的except子句,然后继续执行 try 语句之后的代码;

  • 如果发生了一个异常,在 except 子句中没有与之匹配的分支,它就会传递到上一级 try 语句中;

  • 如果最终仍找不到对应的处理语句,它就成为一个 未处理异常,终止程序运行,显示提示信息。

 二、try...except...else...

try:
  可能引发异常的代码
except:
except 错误或异常的种类:
except ZeroDivisionError:
except ValueError:
except NameError:
  捕捉异常的信息,处理异常的代码
else:
  如果没有发生异常,所执行的代码
while True:
    x=input("请输入整数捏:")
    try:
        x=int(x)
    except Exception as e:
        print("输入错误捏")
    else:
        print("输入:",x)
        break

 三、try...except...finally

try:
  可能引发异常的代码
except:
except 错误或异常的种类:
except ZeroDivisionError:
except ValueError:
except NameError:
  捕捉异常的信息,处理异常的代码
finally:
  无论是否发生异常,均执行的代码
def getNum(n):    try:        print('try --> ',10 / n)    except ZeroDivisionError:        print('except --> Error: ZeroDivisionError argument.')    else:        print('else -->')    finally:        print('finally -->')
1、调用:getNum(0)输出结果:except --> Error: ZeroDivisionError argument.finally -->
2、调用:getNum(1)输出结果:try -->  10.0else -->finally -->

其中,else 子句只能出现在所有 except 子句之后,只有在没有出现异常时执行;finally 子句放在最后,无论是否出现异常都会执行。

附:

常用异常名:

异常名    描述

AttributeError 调用不存在的方法引发的异常

EOFError     遇到文件末尾引发的异常

ImportError 导入模块出错引发的异常

IndexError     列表越界引发的异常

IOError     I/O操作引发的异常,如打开文件出错等

KeyError   使用字典中不存在的关键字引发的异常

NameError 使用不存在的变量名引发的异常

TabError 语句块缩进不正确引发的异常

ValueError 搜索列表中不存在的值引发的异常

ZeroDivisionError   除数为零引发的异常
原文链接:https://blog.csdn.net/u014612521/article/details/100132475

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值