forked from heyxiaohao/Python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path错误_调试和测试.py
103 lines (65 loc) · 1.57 KB
/
错误_调试和测试.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 错误处理机制 try except finally
print '-----错误处理-----'
try:
r = 10 / 1
print 'try...'
except ZeroDivisionError, e:
print e
else: # else 语句块 在没有错误时执行
print 'else...'
finally:
print 'finally...'
print 'End'
# 错误基类 BaseException
print '使用内置logging模块打印错误信息'
import logging
logging.basicConfig(level=logging.INFO)
def foo(s):
return 10 / int(s)
def bar(s):
return foo(s) * 2
def main():
try:
bar('0')
except StandardError, e:
print e
logging.exception(e) # 可以打印出堆栈信息
main()
print 'End'
# 抛出错误 raise 可以抛出错误对象,也可以单独使用 raise 用于将错误抛出,供上层处理
def func1(s):
return 10 / int(s)
def func2(s):
try:
func1(s)
except ZeroDivisionError:
print 'Error'
raise
def main():
try:
func2('0')
except ZeroDivisionError, e:
logging.exception(e)
main()
print '---------------'
print '-----调试-----'
# 使用 print
# 使用断言, -O 参数关闭断言
try:
n = 0
assert (n != 0) # 抛出AssertError异常
except AssertionError, e:
logging.exception(e)
else:
10 / n
# 使用logging模块
print '---------------'
# import logging
# logging.basicConfig(level=logging.INFO)
s = '0'
n = int(s)
logging.info('n = %d' % n)
print 10 / n
print '-------------'