【python】异常处理及程序调试(一)

雨点打透心脏的1/2处 2023-09-23 20:06 135阅读 0赞

在这里插入图片描述

异常类和异常处理

一、程序的错误类型

  • 语法错误:不符合语法规则而产生的错误,如:标识符命名错误,缩进错误,访问未定义的变量等。这类错误在编辑或解释时就会被检测出来,产生这类错误,程序将会终止,无法运行。
  • 运行中错误:代码编写时没有语法错误,在运行过程中发生错误,例如:除数为0、索引下标越界、数据类型不匹配,要打开的文件不存在等。出现这类错误时,系统会终止程序运行,抛出异常。
  • 逻辑错误:程序设计或代码编写中的逻辑错误,虽然语法都正确,程序也能正常运行,但是运行的结果是错误的。

异常主要是指运行中产生的错误

二、异常和异常类

1.异常概述

导致程序中断运行的错误称为异常(Exception) 异常是一个事件,该事件会在程序执行过程中发生,影响程序的正常执行。当Python程序发生异常时需要捕获处理它,否则程序会终止执行。

2.异常类

Python定义了一些异常类,配合一定的机制在Python中处理程序中的各种异常。这些类的基类都是BaseException。

三、异常处理

Python中使用try-except语句来处理异常。

1.处理格式

try-except语句的格式如下:

  1. try:
  2. 代码块
  3. except 异常类型1:
  4. 处理异常1
  5. except 异常类型2:
  6. 处理异常2
  7. except (异常类型3, 异常类型4):
  8. 处理异常34
  9. else:
  10. 没有异常时执行
  11. finally:
  12. 无论是否有异常都执行

2.简单举例

代码

  1. list1 = [1,1,2,3,5,8]
  2. try:
  3. print(list1[8])
  4. except IndexError as e:
  5. print("列表索引超出范围!")

执行结果
在这里插入图片描述

3.整除程序的分类异常处理

  1. x,y = eval(input("请输入两个整数: "))
  2. try:
  3. z = x / y
  4. print("z =",z)
  5. except TypeError as e1:
  6. print("数据类型异常:",e1)
  7. except ZeroDivisionError:
  8. print("除数为零异常!")
  9. except:
  10. print("程序运行异常!")
  11. else:
  12. print("程序执行正确!")

执行结果

在这里插入图片描述

  1. x,y = map(int,input("请输入两个整数: ").split())

在这里插入图片描述

4.异常抛出

抛出异常由raise语句执行,raise的一般格式如下:

  1. raise [Exception [,args [,traceback]]]
  • Exception为异常的类型。
  • args为用户提供的参数,可选。
  • traceback跟踪异常对象,可选。

5.异常抛出举例

定义一个函数判定传入的参数是否为大于等于0的整数:如果是,则输出该整数;否则,抛出异常。

代码:

  1. def greaterZero(n):
  2. if n < 0:
  3. raise Exception("您传入了一个小于零的整数!") #抛出异常.
  4. else:
  5. print("n =",n)
  6. try:
  7. x = int(input("请输入一个整数: "))
  8. greaterZero(x) #调用函数.
  9. except Exception as e:
  10. print(e)

在这里插入图片描述

四、断言语句

1.概述

assert断言语句是一种在程序测试中比较常用的技术,常用于在程序的某个位置判断是否满足某个条件。
assert语句的一般格式为:

  1. assert expression[,arguments]
  • expression是结果为布尔值的表达式。
  • arguments为参数,一般为错误提示信息,可选。

2.举例

  1. x = -2
  2. assert x >= 0,"x小于0" #表达式为False,触发异常.

在这里插入图片描述

  1. x = 2
  2. assert x >= 0,"x小于0" #表达式为True,不触发异常.

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,135人围观)

还没有评论,来说两句吧...

相关阅读