错误和异常
错误
- 语法错误(syntax error)
- 逻辑错误(logic error)
- 执行期间错误(runtimne error)
demo:
for i in range(10)
print(i)
out —>
SyntaxError: invalid syntax
python的语法分析器完成,检测到错误所在文件和行号.以向上箭头标记错误位置.最后显示错误类型.
当程序检测到一个错误,解释器就无法继续执行下去,抛出异常,终止程序.
异常
>>> 1/0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
>>> a=10
>>> a
10
>>> b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'b' is not defined
异常处理
程序一旦发生错误,程序就无法继续运行.
为了是程序健壮,可做相关异常程序处理.
try…except…
try:
try_statements
except [exceptiomType [as identifier]]:
except_statements
[else:
else_statements]
[finally:
finally_statements]
# except ZeroDivisionError:
# print("除数不可以为0:.")
# except NameError:
# print("请检查变量是否赋值.")
# except Exception as e:
# print(e.args)
except (ZeroDivisionError,NameError,TypeError) as e:
print(e.args)
else:
print("未捕捉到异常,X/Y=12.0")
fianlly:
print("离开try...=except 模块.")
#print(Z)
raise(触发异常)
除了系统抛出的异常,我们可以用raise语句自己触发异常.
格式:
raise[Exception[,args[,traceback]]]
-
Exception:异常类型
-
args:我们自己提供参数
-
traceback:可选,如果存在,跟踪异常对象.
try:
raise NameError("Sorry,Error occur")
except NameError :
print("捕捉到异常")
assert(断言)
assert condition
逻辑上相当于:
if not condition
raise AssertionError()