本文概述
- 常见异常
- 没有处理异常的问题
- python中的异常处理
- 异常的except语句
- 要记住的要点
- 声明多个异常
- finally块
- 引发异常
- 要记住的要点
- 自定义异常
每当发生异常时, 程序都会停止执行, 因此不会执行其他代码。因此, 异常是python脚本无法解决的错误。
Python为我们提供了处理异常的方法, 以便可以在不中断代码的情况下执行代码的另一部分。但是, 如果我们不处理该异常, 则解释器不会执行在此之后存在的所有代码。
常见异常 下面列出了可以从普通python程序抛出的常见异常列表。
- ZeroDivisionError:在数字除以零时发生。
- NameError:找不到名称时发生。它可以是本地的或全局的。
- IndentationError:如果给出了不正确的缩进。
- IOError:输入输出操作失败时发生。
- EOFError:到达文件末尾且正在执行操作时发生。
例子
a = int(input("Enter a:"))
b = int(input("Enter b:"))
c = a/b;
print("a/b = %d"%c)#other code:
print("Hi I am other part of the program")
输出
Enter a:10
Enter b:0
Traceback (most recent call last):
File "exception-test.py", line 3, in <
module>
c = a/b;
ZeroDivisionError: division by zero
python中的异常处理 如果python程序包含可能引发异常的可疑代码, 则必须将该代码放在try块中。在try块之后必须加上except语句, 该语句包含一个代码块, 如果try块中有异常, 将执行该代码块。
文章图片
句法
try:
#block of code except Exception1:
#block of codeexcept Exception2:
#block of code#other code
我们还可以将else语句与try-except语句一起使用, 如果没有异常发生在try块中, 则可以将要在场景中执行的代码放在其中。
下面给出将else语句与try-except语句结合使用的语法。
try:
#block of code except Exception1:
#block of code else:
#this code executes if no except block is executed
文章图片
例子
try:
a = int(input("Enter a:"))
b = int(input("Enter b:"))
c = a/b;
print("a/b = %d"%c)
except Exception:
print("can't divide by zero")
else:
print("Hi I am else block")
输出
Enter a:10
Enter b:2
a/b = 5
Hi I am else block
异常的except语句 Python提供了不使用except语句不指定异常名称的灵活性。
考虑以下示例。
例子
try:
a = int(input("Enter a:"))
b = int(input("Enter b:"))
c = a/b;
print("a/b = %d"%c)
except:
print("can't divide by zero")
else:
print("Hi I am else block")
输出
Enter a:10
Enter b:0
can't divide by zero
要记住的要点
- Python方便我们不使用except语句指定异常。
- 我们可以在except语句中声明多个异常, 因为try块可能包含引发不同类型异常的语句。
- 我们还可以指定else块以及try-except语句, 如果try块中未引发异常, 则将执行该语句。
- 不引发异常的语句应放在else块内。
try:
#this will throw an exception if the file doesn't exist.
fileptr = open("file.txt", "r")
except IOError:
print("File not found")
else:
print("The file opened successfully")
fileptr.close()
输出
File not found
声明多个异常 python允许我们使用except子句声明多个异常。在try块引发多个异常的情况下, 声明多个异常非常有用。
句法
try:
#block of code except (<
Exception 1>
, <
Exception 2>
, <
Exception 3>
, ...<
Exception n>
)
#block of code else:
#block of code
例子
try:
a=10/0;
except ArithmeticError, StandardError:
print "Arithmetic Exception"
else:
print "Successfully Done"
输出
Arithmetic Exception
finally块 我们可以将finally块与try块一起使用, 在其中, 我们可以调整在try语句引发异常之前必须执行的重要代码。
下面给出了使用finally块的语法。
句法
try:
# block of code
# this may throw an exception
finally:
# block of code
# this will always be executed
文章图片
例子
try:
fileptr = open("file.txt", "r")
try:
fileptr.write("Hi I am good")
finally:
fileptr.close()
print("file closed")
except:
print("Error")
输出
file closed
Error
引发异常 使用python中的raise子句可以引发异常。下面给出了使用raise语句的语法。
句法
raise Exception_class, <
value>
要记住的要点
- 要引发异常, 请使用raise语句。异常类名紧随其后。
- 可以为异常提供可以在括号中给出的值。
- 要访问值” as” , 请使用关键字。 ” e” 用作存储异常值的参考变量。
try:
age = int(input("Enter the age?"))
if age<
18:
raise ValueError;
else:
print("the age is valid")
except ValueError:
print("The age is not valid")
输出
Enter the age?17
The age is not valid
例子
try:
a = int(input("Enter a?"))
b = int(input("Enter b?"))
if b is 0:
raise ArithmeticError;
else:
print("a/b = ", a/b)
except ArithmeticError:
print("The value of b can't be 0")
输出
Enter a?10
Enter b?0
The value of b can't be 0
自定义异常 python允许我们创建可以从程序引发并使用except子句捕获的异常。但是, 建议你在访问Python对象和类之后阅读本节。
考虑以下示例。
例子
class ErrorInCode(Exception):
def __init__(self, data):
self.data = http://www.srcmini.com/data
def __str__(self):
return repr(self.data)try:
raise ErrorInCode(2000)
except ErrorInCode as ae:
print("Received error:", ae.data)
【Python如何进行异常处理()】输出
Received error: 2000
推荐阅读
- Python模块用法最全面的剖析
- Python数学模块用法介绍
- Python如何使用List Comprehension()
- Python日期和时间处理完全解读
- Python调试工具(断言关键字assert)
- 逆向分析|大神论坛 史上最全植物大战僵尸分析及游戏辅助Python实现
- xp系统下CAD图纸打开速度很慢如何处理|CAD图纸打开速度很慢的处理办法
- xp系统下怎样运用百度输入法输出日文
- xp系统下如何运用电驴下载资源【图文详细教程】