~~~
try:
pass
except <异常类型>:
pass
except <异常类型> as 变量:
pass
except:
pass
else:
pass
finally:
pass
# 也可以这样写
try:
pass
except (exce1, exce2, ...) as e:
pass
~~~
只能处理一个异常
-----------------
`try`子句中,第一个异常出现后,程序直接寻找相应的`except`处理,找不到则向上冒泡 raise,不再执行剩余的`try`子句。
~~~
try:
a # NameError
print('continue try statement') # 并没有执行到这里
int('a') # ValueError
except ValueError as e:
print(f'ValueError: {e}')
except NameError as e:
print(f'NameError: {e}')
# 程序执行结果:
# NameError: name 'a' is not defined
~~~
except 继承关系的异常
------------------------
谁在前,匹配谁。
例:
~~~
try:
10/0
except ZeroDivisionError:
print('ZeroDivisionError')
except ArithmeticError:
print('ArithmethicError')
# 程序执行结果:ZeroDivisionError
~~~
SyntaxError 无法捕获
------------------------
~~~
try:
print 'abc'
except SyntaxError:
pass
# 程序执行结果:
# SyntaxError: Missing parentheses in call to 'print'. Did you mean print('abc')?
~~~
except Exception as e 和 except Exception, e
-------------------------------------------------
python3仅支持 except Exception as e
Exception & BaseException
--------------------------------
捕获一个通用异常使用 Exception。
BaseException 包含三个与 Exception 同级的高级异常。
~~~
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
+-- StopIteration
+-- StopAsyncIteration
... ...
... ...
~~~
使用finally释放资源
---------------------
~~~
try:
f = open('./a.text')
finally:
f.close()
~~~
使用内置语法代替 try/except
-------------------------------
#### with
`with`语句在打开文件后会自动调用`finally`并关闭文件
~~~
with open('./a.txt') as f:
pass
~~~
#### getattr()
`getattr()`函数用于返回一个对象属性值。
适用于对象的属性:obj.attr
不适用于 index 或 key:l[1]、d['key']
~~~
getattr(...)
getattr(object, name[, default]) -> value
~~~
设置第三个参数默认值可以避免异常:
~~~
class A:
pass
a = A()
b = getattr(A, 'name', 'stephen')
print(b) # stephen
~~~
- 前言
- Python编程规范
- 编码
- 代码
- 缩进、行宽、引号、空行
- 空格
- 换行
- import
- 注释
- 代码注释
- 文档注释(Docstring)
- 命名规范
- 数据结构
- 变量
- 变量作用域
- 命名空间
- 作用域
- python作用域
- 对象
- 序列
- 可迭代对象
- 迭代器
- 生成器
- 可迭代对象 & 迭代器 & 生成器
- 整数池 & 字符串intern
- 数据类型
- 数字
- int
- float
- NaN
- 四舍五入 & 取整
- 列表
- 元组
- 字典
- 集合
- 字符串
- 字符集&字符编码
- 字符串&字节串
- 字符串函数
- 字符串格式化
- str.format
- Formatted string literals
- format函数
- string.Formatter类
- %
- Format String Syntax
- Format Specification Mini-Language
- fill
- align
- sign
- #
- 0
- width
- grouping_option
- .precision
- type
- locale
- Python3 locale 模块
- 语句
- 运算符
- if/else
- for...in
- while
- break/continue
- 函数
- 函数
- 函数参数
- 递归函数
- 匿名函数
- 高阶函数
- map
- reduce
- filter
- sorted
- 返回函数
- 闭包
- 装饰器
- 函数装饰器
- 带参数的装饰器
- 类装饰器
- 带参数的类装饰器
- 偏函数
- 面向对象
- 类 & 实例
- 属性
- 方法
- 访问限制
- 继承
- 新式类 & 经典类
- MRO
- MixIn
- 模块
- 特殊变量
- 编写模块
- 引入 & 重载
- 搜索模块
- 第三方模块
- 常见模块
- 标准库
- os
- sys
- datetime
- re
- urllib
- time/datetime
- threading
- multiprocessing
- builtins
- help
- range
- enumerate
- 异同
- str() repr() ascii()
- exit()、sys.exit()、os._exit()
- 数据库
- mysql
- 错误、调试、测试
- 异常
- 异常处理
- 自定义异常
- 抛出异常
- 调试
- logging
- pdb
- 线程&&进程
- 线程
- 杂
- python 脚本传参
- python无关
- redis
- mongo
- linux
- mysql简略