Python 【错误处理】
Python的错误有语法错误与运行错误。语法错误称为解析错,软件中的语法分析器会在编译时标出语法错误。运行时检测到的错误称为异常。程序遇到异常就会停止执行,然后将异常打印出来,导致后面的正确代码也无法执行。Pyhton中常见的异常有:0作为除数、未知变量..字符出现在算数式中。
(而在java中除以浮点数0.0是允许的,得到正无穷infinity。
)
1.处理异常的几种方式:
(1) try-except-finally自身处理
try: ..... except Exception as 别名: ..... finally: ..... |
首先进入try执行。若try中的代码正确,执行完try后进入finally执行。若try中的语句错误,则不执行try,进入except中执行代码,最后进入finally执行。无论有没有异常,finally语句块都会执行。
①except中的代码称为“异常处理程序”。
②可以有多个并列except来捕捉可能出现的多个异常,但是最多只有一个异常会被处理。
③Exception是所有异常的父类,使用以下的代码就会输出异常的描述信息。
except Exception as e print(e)
|
(2)raise 抛出由调用者处理
raise出现于except语句中。如果try中的语句出现错误,程序进入except中执行代码raise,将异常抛出给用户看,fianlly也会执行。
2.用户自定义异常
异常本质是类,用户自定义异常类就是定义一个类。
class MyError(Exception): def __init__(self,msg): self.msg=msg def __str__(self): return self.msg
|
和java中的自定义异常类一样,用户自定义异常只需要定义三个东西:变量、构造函数、输出变量函数。这个变量一般是描述异常信息的字符串msg,返回msg即可输出异常信息。
from math import sqrt
def area(a,b,c):
if a<=0 or b<=0 or c<=0:
mye=MyError("三角形三边长应该>0")
raise mye
if a+b <=c or b+c<=a or a+c<=b:
mye=MyError("三角形任意两边之和应该>第三边")
raise mye
t=(a+b+c)/2
t=t*(t-a)*(t-b)*(t-c)
return sqrt(t)
class MyError (Exception):
def __init__(self,msg):
self.msg=msg
def __str__(self):
return self.msg
if __name__=="__main__":
try:
print(area(3,1,5))
except Exception as e:
print(e)