python-异常处理方法

异常(Exception)是程序在运行时可能出现的会导致程序运行终止的错误。这种错误是不能通过编译系统检查出来的。
常见异常如下:
(1)系统资源不足。例如,内存不足,不可以动态申请内存空间; 磁盘空间不足,不能打开新的输出文件等。
(2)用户操作错误导致运算关系不正确。例如,出现分母为0。 数学运算溢出, 数组越界,参数类型不能转换等。
异常有以下的一些特点:
(1)偶然性。程序运行中,异常并不总是会发生。
(2)可预见性。异常的存在和出现是可以预见的。
(3)严重性。一旦异常发生,程序可能终止,或者运行的结果不可预知。
在python里,用try...except...else...finally结构来处理,下面举几个例子:

案例一:

 try:  

   fh = open("txtfile.txt", "r")

except IOError:

     print("输入输出操作出现异常!")

except Exception:

    print("发生错误了,你打开的文件不存在!")

案例二:

try:  

   fh = open("txtfile.txt", "r")

except Exception:

   print("发生错误了,你打开的文件不存在!")

else:

   for yy in fh.readlines():

       print(yy)

finally:

print("寄语:尽管今天软件有点问题,但是最终合作愉快!")

案例三:

#给小学生做个简单的减法计算器。计算机无法正常抛出异常,用户自己设置陷阱!

try:

    x=eval(input("请输入被减法数:"))

    y=eval(input("请输入减数:"))

    if x<y:

        raise ValueError("你输入的数字不合法:第一个数不能小于第二个数")

    print("x-y={}".format(x-y))

exceptValueError as e:

    print(e)

案例四:

a = (35, 75, 60,-80, 76)

sum = 0

try:

    for i in data:

        if i < 0: raiseValueError(str(i)+"不正确,成绩不能为负数!")

        sum += i

    print('平均值=', average(data))

exceptValueError as e:

    print(e)

except Exceptionas e:

    print(e) #我们在异常的处理中将异常抛出来。

案例五:

try:

    f = open('mytext.txt', 'w') #打开要写入的文件

    while True:

        s = input('请输入字符串(按Q结束):')

        if s.upper() == 'Q':

            break

        f.write(s + '\n')

exceptKeyboardInterrupt:

    print('程序中断!(Ctrl-C)')

finally:

    f.close()

#-------------------------------日志写入类----------------

class log:

    def__init__(self,filename="1.txt",e="Error"):

        self.filename=filename

        self.error=e

    def Writelog(self):

        import sys,os

        import datetime as dt

       strNow=dt.datetime.now().strftime("%Y.%m.%d-%H:%M:%S")

        #print(strNow)sys.path[0]为当前目录路径。

        withopen(sys.path[0]+"\\1.log",'a') as f:

            strFileName=" 异常出现在文件:"+self.filename+\

            " 错误发生时间:"+strNow+" 错误为:"+self.error+"\n"

            #print(strFileName)

            f.write(strFileName)

#---------------------------------以上是写入日志类-----------------

def main():

    try:  

        fh = open("testfile","r")

        for yy in fh.readlines():

            print(yy)

    except IOError as e:

        print("发生错误了,请重新打开窗口!")

        log1=log(__file__,e.strerror)

        log1.Writelog()

将在后台把异常情况写入日志中,便于定期维护管理。

猜你喜欢

转载自blog.csdn.net/weixin_42039090/article/details/80561789