try - except 语句

简介: try - except 语句

try - except 语句
try:
检测范围
except Exception[as reason]:
出现异常后的处理代码
try 语句按照如下方式工作:

首先,执行try子句(在关键字try和关键字except之间的语句)
如果没有异常发生,忽略except子句,try子句执行后结束。
如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和except之后的名称相符,那么对应的except子句将被执行。最后执行try - except语句之后的代码。
如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。
【例子】

1
try:
2
f = open('test.txt')
3
print(f.read())
4
f.close()
5
except OSError:
6
print('打开文件出错')
7

8

打开文件出错

打开文件出错
【例子】

1
try:
2
f = open('test.txt')
3
print(f.read())
4
f.close()
5
except OSError as error:
6
print('打开文件出错\n原因是:' + str(error))
7

8

打开文件出错

9

原因是:[Errno 2] No such file or directory: 'test.txt'

打开文件出错

原因是:[Errno 2] No such file or directory: 'test.txt'
一个try语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。

【例子】

1
try:
2
int("abc")
3
s = 1 + '1'
4
f = open('test.txt')
5
print(f.read())
6
f.close()
7
except OSError as error:
8
print('打开文件出错\n原因是:' + str(error))
9
except TypeError as error:
10
print('类型出错\n原因是:' + str(error))
11
except ValueError as error:
12
print('数值出错\n原因是:' + str(error))
13

14

数值出错

15

原因是:invalid literal for int() with base 10: 'abc'

数值出错

原因是:invalid literal for int() with base 10: 'abc'
【例子】

1
dict1 = {'a': 1, 'b': 2, 'v': 22}
2
try:
3
x = dict1['y']
4
except LookupError:
5
print('查询错误')
6
except KeyError:
7
print('键错误')
8
else:
9
print(x)
10

11

查询错误

查询错误
try-except-else语句尝试查询不在dict中的键值对,从而引发了异常。这一异常准确地说应属于KeyError,但由于KeyError是LookupError的子类,且将LookupError置于KeyError之前,因此程序优先执行该except代码块。所以,使用多个except代码块时,必须坚持对其规范排序,要从最具针对性的异常到最通用的异常。

【例子】

1
dict1 = {'a': 1, 'b': 2, 'v': 22}
2
try:
3
x = dict1['y']
4
except KeyError:
5
print('键错误')
6
except LookupError:
7
print('查询错误')
8
else:
9
print(x)
10

11

键错误

键错误
【例子】一个 except 子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组。

1
try:
2
s = 1 + '1'
3
int("abc")
4
f = open('test.txt')
5
print(f.read())
6
f.close()
7
except (OSError, TypeError, ValueError) as error:
8
print('出错了!\n原因是:' + str(error))
9

10

出错了!

11

原因是:unsupported operand type(s) for +: 'int' and 'str'

出错了!

原因是:unsupported operand type(s) for +: 'int' and 'str'

相关文章
|
5月前
使用if语句
使用if语句
39 2
|
5月前
|
Serverless C++
8语句
8语句
38 1
|
5月前
|
C语言
if语句的使用
该内容是关于C语言中的条件判断语句`if`的介绍。`if`语句用于根据表达式的真假来决定是否执行特定的语句,当表达式为真(非零值)时执行语句,否则不执行。在C语言中,0被认为是假,非0被认为是真。示例包括判断输入整数是否为奇数。此外,还提到了`if...else...`语句,用于在表达式不成立时执行另一组语句。当有多条语句需要执行时,可以使用花括号`{}`来包围。内容中还包括了嵌套`if`语句的例子,用于判断输入的整数是0、正数还是负数,以及如何避免悬空`else`的问题。
43 1
|
19天前
|
Python
if语句
if语句。
27 6
|
5月前
|
JavaScript Shell PHP
shebang语句是什么(二)
shebang语句是什么(二)
28 0
|
5月前
|
C++
c++语句详细介绍(二)
c++语句详细介绍(二)
52 0
|
Linux C语言
do-while(0)语句到底有什么用?
do-while(0)语句到底有什么用?
107 0
|
自然语言处理 程序员 Python
耐人寻味的 for...else...语句
耐人寻味的 for...else...语句
72 0
|
编译器 C++
一文带你搞定C++语句
一文带你搞定C++语句
164 0
一文带你搞定C++语句