错误和异常处理家庭作业帮助
Python中的异常处理
概述
在这篇文章中,我们将介绍Python如何处理异常的错误。
什么是异常?
一个例外是程序执行过程中发生的错误。何时
发生错误,Python会生成可以处理的异常,从而避免了您的异常
程序崩溃
为什么使用例外?
异常在许多方面方便处理错误和特殊条件
在程序中。当你认为你有一个可以产生错误的代码
你可以使用异常处理。
提高例外
您可以通过使用引发异常在自己的程序中引发异常
声明。
提升异常会破坏当前的代码执行并返回异常
回到处理。
异常错误
以下是Python中的常见异常错误:
IOError
如果文件无法打开。
ImportError
如果python找不到模块
ValueError
当内置操作或函数接收到具有该参数的参数时引发
正确的类型,但不适当的价值
键盘中断
当用户点击中断键(通常为Control-C或Delete)时,
EOFError
当内置函数(input()或raw_input())中的一个命中时引发
文件结束条件(EOF),而不读任何数据
异常错误示例
现在,当我们知道某些异常错误是什么意思时,我们来看看一些
例子:
除了IOError:
print(’尝试读取文件时出错)“
除了ValueError:
print(’在文件中找到的非数字数据’)
除了ImportError:
打印“找不到模块”
除了EOFError:
print(’你为什么对我做一个EOF?’)
除了KeyboardInterrupt:
打印(“您取消了操作”。)
除:
print(’发生错误’)
尽量使用尽可能少的try块,并尝试区分故障
条件由他们抛出的种种异常。
设置异常处理块
要在Python中使用异常处理,首先需要有一个catch-all除外
条款。
“try”和“except”是Python关键字,用于捕获异常。
try-except [exception-name](见上面的例子)块
try子句中的代码将通过语句执行。
如果发生异常,则try块的其余部分将被跳过
except子句将被执行。
尝试:
一些声明在这里
除:
异常处理
让我们看一个简单的例子,说明如何做到这一点:
尝试:
打印1/0
除了ZeroDivisionError:
打印“你不能除以零,你很傻”。
它是如何工作的?
错误处理是通过使用在try中捕获的异常来完成的
块和处理在块外。如果遇到错误,尝试块
代码执行停止并转移到除了块。
除了在try块之后使用一个except块,还可以使用
终于阻止了。
finally块中的代码将被执行,而不管是否有异常
发生。
代码示例
让我们写一些代码来看看当你不使用错误处理时会发生什么
程序。
该程序将要求用户输入1到10之间的数字,然后打印
号码。
number = int(raw_input(“输入1到10之间的数字”))
打印“你输入的号码”,号码
只要用户输入一个数字,这个程序就可以很好玩
如果用户放入别的东西(如字符串),会发生什么?
输入介于1到10之间的数字
你好
您可以看到,当我们输入一个字符串时,程序会抛出一个错误。
追溯(最近呼叫最后):
文件“enter_number.py”,第1行
number = int(raw_input(“输入介于1到10之间的数字)
“))
ValueError:int()的无效字面值为10:’hello’
ValueError是一个异常类型。让我们看看我们如何使用异常处理
修复以前的程序
导入系统
打印“让我们修复以前的异常处理代码”
尝试:
number = int(raw_input(“输入介于1到10之间的数字)
“))
除了ValueError:
打印“仅限数字”
sys.exit()
打印“你输入的号码
“,号码
如果我们现在运行程序,并输入一个字符串(而不是一个数字),我们可以看到
我们得到不同的输出。
让我们修复以前的异常处理代码
输入介于1到10之间的数字
你好
只有Err ..数字
尝试…除… else子句
else子句中的一个try,except语句必须遵循所有的except子句,而且是
对于如果try子句不引发必须执行的代码,这是有用的
例外。
尝试:
data = something_that_can_go_wrong
除了IOError:
handle_the_exception_error
其他:
doing_different_exception_handling
else子句中的异常不由前面的except子句来处理。
确保else子句在finally块之前运行。
尝试… finally子句
finally子句是可选的。它旨在定义清理操作
必须在所有情况下执行
尝试:
提起KeyboardInterrupt
最后:
打印“再见,世界!”
…再见,世界!
键盘中断
总是在离开try语句之前执行finally子句,无论是否
异常发生与否。
请记住,如果不在except行上指定异常类型,它将会
捕获所有异常,这是一个坏主意,因为这意味着你的程序将忽略
意外的错误以及其他块实际准备的错误
处理。
到目前为止,错误消息还没有被提到过,但是如果你已经尝试了这些例子,你可能已经看到了一些。有(至少)两种可区分的错误:语法错误和异常。
8.1。语法错误
语法错误(也称为解析错误)可能是您仍在学习Python时最常见的抱怨:
解析器重复违规行,并显示一个指向检测到错误的行中的最早点的“箭头”。该错误是由箭头之前的令牌引起的(或至少是检测到的):在示例中,在关键字print处检测到错误,因为在它之前缺少冒号(’:’)。打印文件名和行号,以便您知道从脚本输入的位置。
8.2。例外
即使语句或表达式在语法上是正确的,当尝试执行它时也可能导致错误。在执行期间检测到的错误称为异常,并且不会无条件致命:您将很快学习如何在Python程序中处理它们。然而,大多数异常都不由程序处理,并导致错误消息,如下所示:
我们在homeworkchina.com为错误和异常处理家庭作业帮助提供专家帮助
家庭作业。我们的导师是为各级学生提供家庭作业帮助的专家。