语法错误
逻辑错误
系统错误
常见的异常类型
- 除零异常:
- 报错结果:ZeroDivisionError: division by zero
- 如何避免:
-
def div(a,b): return a/b try: print(div(1/0)) except: print('这里有一个异常') #这样的好处是可以避免终端打印错误
- 名称异常
- 报错现象:
-
nums = [1,2,3,4] for i in nams: print(f'这是nums数组中的元素{i}')
- 索引异常
- 报错代码:
nums = [1,2,3,4]
for i in nums:
print(f'这是nums数组中的元素{nums[i]}')#超出了nums[]列表的上限
报错现象:
Traceback (most recent call last):
File "/Users/cangqiongqiyuyunxi/PycharmProjects/automatic_test/inherication.py", line 64, in <module>
print(f'这是nums数组中的元素{nums[i]}')
IndexError: list index out of range
- 键异常
- 报错代码:
-
dic1 = {'name':'shaoqiran'} print(dic1['age']) 报错打印:KeyError: 'age'
如何处理异常:
# “except exception as e" 是 Python 中的异常处理语句,用于捕获特定类型的异常并将其赋值给一个变量。例如:
try:
# 可能会抛出异常的代码
except Exception as e:
# 捕获特定类型的异常,并将其赋值给变量 e
在这个例子中,如果 try 块中的代码抛出了任何类型的异常,except 块就会捕获它,并将其赋值给变量 e。这样我们就可以在 except 块中使用这个变量来处理异常。
实例:
def div(a, b):
return a / b
try:
div(1, 1)
li1 = [1, 2, 3, 4]
print(f'第五个元素是{li1[4]}')
except Exception as e:
print(e)
print('这里有一个异常')
运行结果是:
list index out of range
这里有一个异常
自定义异常:
class MyException(Exception):
def __init__(self,msg):
print(f'这是一个异常{msg}')
def setint(num):
if num <= 0 or num >200:
raise MyException(f'值错误{num}')
else:
print(f'设置的年龄{num}')
setint(-10)
运行结果是:这是一个异常值错误-10
Traceback (most recent call last):
File "/Users/cangqiongqiyuyunxi/PycharmProjects/automatic_test/inherication.py", line 85, in <module>
setint(-10)
File "/Users/cangqiongqiyuyunxi/PycharmProjects/automatic_test/inherication.py", line 82, in setint
raise MyException(f'值错误{num}')
__main__.MyException: 值错误-10