异常类和异常处理
一、程序的错误类型
- 语法错误:不符合语法规则而产生的错误,如:标识符命名错误,缩进错误,访问未定义的变量等。这类错误在编辑或解释时就会被检测出来,产生这类错误,程序将会终止,无法运行。
- 运行中错误:代码编写时没有语法错误,在运行过程中发生错误,例如:除数为0、索引下标越界、数据类型不匹配,要打开的文件不存在等。出现这类错误时,系统会终止程序运行,抛出异常。
- 逻辑错误:程序设计或代码编写中的逻辑错误,虽然语法都正确,程序也能正常运行,但是运行的结果是错误的。
异常主要是指运行中产生的错误
二、异常和异常类
1.异常概述
导致程序中断运行的错误称为异常(Exception) 异常是一个事件,该事件会在程序执行过程中发生,影响程序的正常执行。当Python程序发生异常时需要捕获处理它,否则程序会终止执行。
2.异常类
Python定义了一些异常类,配合一定的机制在Python中处理程序中的各种异常。这些类的基类都是BaseException。
三、异常处理
Python中使用try-except语句来处理异常。
1.处理格式
try-except语句的格式如下:
try:
代码块
except 异常类型1:
处理异常1
except 异常类型2:
处理异常2
except (异常类型3, 异常类型4):
处理异常3和4
else:
没有异常时执行
finally:
无论是否有异常都执行
2.简单举例
代码
list1 = [1,1,2,3,5,8]
try:
print(list1[8])
except IndexError as e:
print("列表索引超出范围!")
执行结果
3.整除程序的分类异常处理
x,y = eval(input("请输入两个整数: "))
try:
z = x / y
print("z =",z)
except TypeError as e1:
print("数据类型异常:",e1)
except ZeroDivisionError:
print("除数为零异常!")
except:
print("程序运行异常!")
else:
print("程序执行正确!")
执行结果
x,y = map(int,input("请输入两个整数: ").split())
4.异常抛出
抛出异常由raise语句执行,raise的一般格式如下:
raise [Exception [,args [,traceback]]]
- Exception为异常的类型。
- args为用户提供的参数,可选。
- traceback跟踪异常对象,可选。
5.异常抛出举例
定义一个函数判定传入的参数是否为大于等于0的整数:如果是,则输出该整数;否则,抛出异常。
代码:
def greaterZero(n):
if n < 0:
raise Exception("您传入了一个小于零的整数!") #抛出异常.
else:
print("n =",n)
try:
x = int(input("请输入一个整数: "))
greaterZero(x) #调用函数.
except Exception as e:
print(e)
四、断言语句
1.概述
assert断言语句是一种在程序测试中比较常用的技术,常用于在程序的某个位置判断是否满足某个条件。
assert语句的一般格式为:
assert expression[,arguments]
- expression是结果为布尔值的表达式。
- arguments为参数,一般为错误提示信息,可选。
2.举例
x = -2
assert x >= 0,"x小于0" #表达式为False,触发异常.
x = 2
assert x >= 0,"x小于0" #表达式为True,不触发异常.