文章目录
- 前言
- 一、处理 ZeroDivisionError(除0错误)
- 二、使用 try-except 代码块
- 三、使用 try-except-else 代码块
- 四、分析文本
前言
Python 使用被称为异常的特殊对象来管理程序执行期间出现的错误,每当发生错误时,它都会创建一个异常对象,终止程序并显示一个包含异常报告的 traceback。
异常是使用 try-except 代码块处理,它让 python 执行指定操作,并告诉 python 发生异常该怎么办。
一、处理 ZeroDivisionError(除0错误)
当一个数字除以0时会出现 ZeroDivisionError 错误
代码如下(示例):
print("Give me two numbers, and I'll divide them.")
print("Enter 'q' to quit.")
while True:
first_number = input('first_number:')
if first_number == 'q':
break
second_number = input('second_number:')
if second_number == 'q':
break
answer = int(first_number)/int(second_number)
print(answer)
输出:
Give me two numbers, and I'll divide them.
Enter 'q' to quit.
first_number:15
second_number:5
3.0
first_number:5
second_number:0
Traceback (most recent call last):
File "D:/PythonWorkSpace/lianxi2.py", line 50, in <module>
answer = first_number/second_number
ZeroDivisionError: division by zero
进程已结束,退出代码 1
上述情况下,python 将停止运行程序,并指出引发了那种异常,我们可根据这些信息对异常进行修改。
二、使用 try-except 代码块
当你认为可能发生错误时,可编写一个 try-except 代码块来处理可能发生的异常,让 python 尝试运行一些代码,并告诉它如果代码引发了指定异常该怎么办。
代码如下(示例):
print("Give me two numbers, and I'll divide them.")
print("Enter 'q' to quit.")
while True:
first_number = input('first_number:')
if first_number == 'q':
break
second_number = input('second_number:')
if second_number == 'q':
break
try:
answer = int(first_number)/int(second_number)
except ZeroDivisionError:
print("You can't divide by zero!")
输出:
Give me two numbers, and I'll divide them.
Enter 'q' to quit.
first_number:15
second_number:0
You can't divide by zero!
first_number:q
进程已结束,退出代码 0
将导致错误的代码行放在 try 代码块中,except 代码块告诉 python 如果 try 代码块出错该怎么办,即使出现异常,程序也将继续运行:显示你编写的友好的错误信息,而不是 traceback。
三、使用 try-except-else 代码块
try-except-else 代码块工作原理大致如下 :将导致错误的代码行放在 try 代码块中,except 代码块告诉 python 如果 try 代码块出错该怎么办,else 代码块中存放着 try 代码块执行成功后需要继续执行的代码;
python 尝试执行 try 代码块中的代码,成功执行为出错则会跳过 except 代码块继续执行 else 代码块;如果 try 代码块出错则会执行 except 代码块,告诉我们出错后该怎么办。
代码如下(示例):
print("Give me two numbers, and I'll divide them.")
print("Enter 'q' to quit.")
while True:
first_number = input('first_number:')
if first_number == 'q':
break
second_number = input('second_number:')
if second_number == 'q':
break
try:
answer = int(first_number)/int(second_number)
except ZeroDivisionError:
print("You can't divide by zero!")
else:
print(answer)
输出:
Give me two numbers, and I'll divide them.
Enter 'q' to quit.
first_number:15
second_number:3
5.0
first_number:15
second_number:0
You can't divide by zero!
first_number:q
进程已结束,退出代码 0
四、分析文本
统计文学书籍 Youth 中有多少个单词(词频统计)。
代码如下(示例):
def count_words(filename):
"""计算文本中大约有多少个单词"""
try:
with open(filename, encoding='UTF-8-sig') as file_oj:
contents = file_oj.read()
except FileNotFoundError:
msg = 'Sorry,this file ' + filename + 'does not exist.'
print(msg)
else:
# 以空格对文本进行切分,独立出每个单词
words = contents.split()
# 将切分后的单词以及每个单词出现的次数放在字典中
for word in words:
# print('%s : %d times' % (word, words.count(word)))
filed[word] = words.count(word)
num_words = len(words)
print('This file ' + filename + ' has about ' + str(num_words) + ' words.')
filed = {}
file_name = r'filer_w\Youth.txt'
count_words(file_name)
输出:
This file filer_w\Youth.txt has about 27317 words.
进程已结束,退出代码 0