try:
pass
except:
pass
finally:
pass
先来看一个最简单的处理异常的示例
#!/usr/bin/evn python3
# -*- coding:utf-8 -*-
try:
r = 1 / 0
except:
print('except')
以上代码执行结果如下
except
当我们认为一段代码可能会出现错误时,我们可以使用 try 语句对错误进行处理,否则错误将一级级向上报,直到有函数可以处理该错误。若无函数处理该错误,程序将推出执行。
在出现错误时我们可以针对错误类型的不同,来输出不同的结果
#!/usr/bin/evn python3
# -*- coding:utf-8 -*-
try:
r = 1 / 0
except ZeroDivisionError:
print ("The second number can't be zero!")
except ValueError:
print "Value Error."
执行以上代码,我们将得到以下结果
The second number can't be zero!
现在我们将代码进行修改,修改后结果如下
#!/usr/bin/evn python3
# -*- coding:utf-8 -*-
try:
r = 1 / '1'
except ZeroDivisionError:
print ("The second number can't be zero!")
except ValueError:
print "Value Error."
执行以上代码,我们将得到以下结果
Value Error.
从以上代码可以看出,针对不同的错误类型我们可以进行不同的输出结果,在 Python 中常用的错误类型如下
异常 | 描述 |
---|---|
NameError | 尝试访问一个没有申明的变量 |
ZeroDivisionError | 除数为 0 |
SyntaxError | 语法错误 |
IndexError | 索引超出序列范围 |
KeyError | 请求一个不存在的字典关键字 |
IOError | 输入输出错误(比如你要读的文件不存在) |
AttributeError | 尝试访问未知的对象属性 |
在 try 语句中我们可以使用 else 和 finally 关键字,当执行 try 后的内容 except 后的内容被跳过时执行 else 后的内容;而 finally 后的语句无论前面执行的是 try 后的语句还是 except 后的语句都会被执行。
#!/usr/bin/evn python3
# -*- coding:utf-8 -*-
while True:
try:
x = raw_input("the first number:")
y = raw_input("the second number:")
r = float(x)/float(y)
except:
print('except try again')
else:
print('else')
finally:
print('finally')
执行结果如下
the first number:1
the second number:2
else
finally
the first number:1
the second number:0
except try again
finally
try...except...在某些情况下能够替代 if...else.. 的条件语句
大多数情况下 python 解释器已经给出了完善的错误提示信息,我们无需在单独编写提示信息,那我们我们该如何使用系统默认的提示信息呢,我们可以通过参数 e 来获取系统默认的提示信息。
#!/usr/bin/evn python3
# -*- coding:utf-8 -*-
while True:
try:
x = raw_input("the first number:")
y = raw_input("the second number:")
r = float(x)/float(y)
except ZeroDivisionError as e:
print(e)
else:
print('else')
finally:
print('finally')
执行结果如下
the first number:1
the second number:0
float division by zero
finally
the first number:1
the second number:-
could not convert string to float: '-'
finally
the first number:1
the second number:1
else
finally
在以上代码中我们并未编写任何的错误提示信息,但是在出现错误时程序正常打印了错误信息 'float division by zero' 和 'could not convert string to float: '-''。
程序在运行的过程中总是会遇到各种各样的问题,有一部分是 BUG,另外一部分我们称之为异常(或错误)。大多数编程语言均使用以下语句来处理异常,Python 也不例外。
try:
pass
except:
pass
finally:
pass
先来看一个最简单的处理异常的示例
#!/usr/bin/evn python3
# -*- coding:utf-8 -*-
try:
r = 1 / 0
except:
print('except')
以上代码执行结果如下
except
当我们认为一段代码可能会出现错误时,我们可以使用 try 语句对错误进行处理,否则错误将一级级向上报,直到有函数可以处理该错误。若无函数处理该错误,程序将推出执行。
在出现错误时我们可以针对错误类型的不同,来输出不同的结果
#!/usr/bin/evn python3
# -*- coding:utf-8 -*-
try:
r = 1 / 0
except ZeroDivisionError:
print ("The second number can't be zero!")
except ValueError:
print "Value Error."
执行以上代码,我们将得到以下结果
The second number can't be zero!
现在我们将代码进行修改,修改后结果如下
#!/usr/bin/evn python3
# -*- coding:utf-8 -*-
try:
r = 1 / '1'
except ZeroDivisionError:
print ("The second number can't be zero!")
except ValueError:
print "Value Error."
执行以上代码,我们将得到以下结果
Value Error.
从以上代码可以看出,针对不同的错误类型我们可以进行不同的输出结果,在 Python 中常用的错误类型如下
异常 | 描述 |
---|---|
NameError | 尝试访问一个没有申明的变量 |
ZeroDivisionError | 除数为 0 |
SyntaxError | 语法错误 |
IndexError | 索引超出序列范围 |
KeyError | 请求一个不存在的字典关键字 |
IOError | 输入输出错误(比如你要读的文件不存在) |
AttributeError | 尝试访问未知的对象属性 |
在 try 语句中我们可以使用 else 和 finally 关键字,当执行 try 后的内容 except 后的内容被跳过时执行 else 后的内容;而 finally 后的语句无论前面执行的是 try 后的语句还是 except 后的语句都会被执行。
#!/usr/bin/evn python3
# -*- coding:utf-8 -*-
while True:
try:
x = raw_input("the first number:")
y = raw_input("the second number:")
r = float(x)/float(y)
except:
print('except try again')
else:
print('else')
finally:
print('finally')
执行结果如下
the first number:1
the second number:2
else
finally
the first number:1
the second number:0
except try again
finally
try...except...在某些情况下能够替代 if...else.. 的条件语句
大多数情况下 python 解释器已经给出了完善的错误提示信息,我们无需在单独编写提示信息,那我们我们该如何使用系统默认的提示信息呢,我们可以通过参数 e 来获取系统默认的提示信息。
#!/usr/bin/evn python3
# -*- coding:utf-8 -*-
while True:
try:
x = raw_input("the first number:")
y = raw_input("the second number:")
r = float(x)/float(y)
except ZeroDivisionError as e:
print(e)
else:
print('else')
finally:
print('finally')
执行结果如下
the first number:1
the second number:0
float division by zero
finally
the first number:1
the second number:-
could not convert string to float: '-'
finally
the first number:1
the second number:1
else
finally
在以上代码中我们并未编写任何的错误提示信息,但是在出现错误时程序正常打印了错误信息 'float division by zero' 和 'could not convert string to float: '-''。