首先上示例代码:
s1 = 'hello'
try:
int(s1)
except IndexError as e:
print('IndexError', e)
except KeyError as e:
print('KeyError', e)
except ValueError as e:
print('ValueError', e)
except Exception as e:
print('Exception', e)
else:
print('try内代码块没有异常则执行我')
finally:
print('无论异常与否,都会执行该模块,通常是进行资源释放工作')
这段代码包含了,异常分支类型捕获
,无异常捕获
,有无异常都会捕获
的执行逻辑。
捕获全局异常
对入口函数进行try...except
异常写入日志文件
示例代码:
import os
s1 = 'hello'
try:
int(s1)
except:
f=open(os.path.abspath('./log.txt'),'a')
traceback.print_exc(file=f)
f.flush()
f.close()
异常作用域
try,except,else,finally代码块里声明的变量,外部都能访问。
作用域的产生
1,只有当变量在Module(模块)、Class(类)、def(函数)中定义的时候,才会有作用域的概念。
2,在作用域中定义的变量,一般只在作用域中有效。
3,在if-elif-else、for-else、while、try-except/try-finally等关键字的语句块中并不会产生作用域
网友评论