1 # print('1')
2 # int('q')
3 # asd
4 # l=[1,2,3]
5 # print(l[100])
6 # d={}
7 # print(d['name'])
8 # class Foo:
9 # pass
10 # Foo.xx
11 # 1/0
12 # for i in 3:
13 # pass
14 # import time
15 # time.sleep(100)
16 # int('as')
17 # AGE=10
18 # age=input('>>:').strip()
19 # if age.isdigit():
20 # age=int(age)
21 # if age>AGE:
22 # print('猜大了')
23 # f=open('a.txt','r',encoding='utf-8')
24 # # print(f.__next__())
25 # # print(f.__next__())
26 # # print(f.__next__())
27 # try:
28 # print(next(f),end='')
29 # print(next(f),end='')
30 # print(next(f),end='')
31 # print(next(f),end='')
32 # except StopIteration as e:
33 # print(e,'出错了')
34 #
35 # print('-----------')
36
37 # -----------------------
38 # try...except...用法
39 # 1.异常类只能用来处理指定的异常情况,如果非指定异常则无法处理
40 # s='hello'
41 # try:
42 # int(s)
43 # except ValueError as e:
44 # print(e)
45 # print('---------------')
46 # 2.多分支:被检测的代码块抛出的异常有多种可能性,
47 # 并且我们需要针对每一种异常类型都定制专门的处理逻辑
48 # try:
49 # print('--1--')
50 # # name
51 # print('--2--')
52 # l=[1,2,3]
53 # # l[100]
54 # print('--3--')
55 # d={}
56 # # d['name']
57 # print('--4--')
58 #
59 # except NameError as e:
60 # print(e)
61 #
62 # except IndexError as e:
63 # print(e)
64 #
65 # except KeyError as e:
66 # print(e)
67 #
68 # print('----end----')
69 # 3.万能异常:Exception 被检测的代码块抛出的异常有多种可能性,
70 # 并且我们针对所有的异常类型都只用一种处理逻辑就可以了,那就使用 Exception
71 # try:
72 # print('--1--')
73 # # name
74 # print('--2--')
75 # l=[1,2,3]
76 # l[100]
77 # print('--3--')
78 # d={}
79 # # d['name']
80 # print('--4--')
81 # except Exception as e:
82 # print(e)
83 # print('----end---')
84 # 4.NameError/IndexError Exception 联合使用
85 # try:
86 # print('--1--')
87 # # name
88 # print('--2--')
89 # l=[1,2,3]
90 # l[100]
91 # print('--3--')
92 # d={}
93 # # d['name']
94 # print('--4--')
95 # except NameError as e:
96 # print(e)
97 # except IndexError as e:
98 # print(e)
99 # except Exception as e:
100 # print('统一的处理方式',e)
101 # print('----end---')
102 # 5.其他结构 try...except else finally #用来回收资源
103 # try:
104 # print('--1--')
105 # # name
106 # print('--2--')
107 # l=[1,2,3]
108 # # l[100]
109 # print('--3--')
110 # d={}
111 # # d['name']
112 # print('--4--')
113 # except NameError as e:
114 # print(e)
115 # except IndexError as e:
116 # print(e)
117 # except Exception as e:
118 # print('统一的处理方式',e)
119 # else:
120 # print('没有发生异常时执行')
121 # finally:
122 # print('无论有没有异常 都执行')
123 #
124 # print('----end---')
125
126 # try:
127 # f=open('a.txt','r',encoding='utf-8')
128 # print(next(f),end='')
129 # print(next(f), end='')
130 # print(next(f), end='')
131 # print(next(f), end='')
132 # print(next(f), end='')
133 # except Exception as e:
134 # print('统一处理',e)
135 # finally:
136 # f.close() # 用来回收资源 表示回收的系统资源 f py会自动回收 os的资源需要f.close()
137 # print(f.name)
138 # 6.主动触发异常:raise 异常类型(值)
139 # class People:
140 # def __init__(self,name,age):
141 # if not isinstance(name,str):
142 # raise TypeError('名字必须为str')
143 # if not isinstance(age,int):
144 # raise TypeError('年龄必须为int')
145 # self.name=name
146 # self.age=age
147 #
148 # p1=People('alice','12')
149 # print(p1.name,p1.age)
150 # 7.自定义异常类型 ==》 类型 = 类
151 # class MyException(BaseException):
152 # def __init__(self,msg):
153 # super().__init__()
154 # self.msg=msg
155 #
156 # def __str__(self):
157 # return '<%s>'%self.msg
158 #
159 # raise MyException('自定义的异常')
160 # obj=MyException('自定义的异常')
161 # print(obj)
162 # 8.断言assert 下面的代码 依赖上面的代码 的结果
163 # info={}
164 # info['name']='alice'
165 # # info['age']=18
166 #
167 # # if 'name' not in info:
168 # # raise KeyError('必须有name这个key')
169 # # if 'age' not in info:
170 # # raise KeyError('必须有age这个key')
171 #
172 # assert ('name' in info) and ('age' in info)
173 #
174 # if info['name']=='alice' and info['age']>10:
175 # print('welcome')