Python3——错误和异常

import sys;


def exception_operation():
    while True:
        try:
            x = int(input("input enter a  number:"))
            break
        except ValueError:
            print("Oops!  That was no valid number.  Try again   ")

    try:
        f = open('myfile.txt')
        s = f.readline()
        i = int(s.strip())
    except OSError as err:
        print("OS error: {0}".format(err))
    except ValueError:
        print("Could not convert data to an integer.")
    except:
        """
         最后一个 except 子句可以忽略异常的名称,它将被当作通配符使用。你可以使用这种方法打印一个错误信息,然后再次把异常抛出。
        """
        print("Unexpected error:", sys.exc_info()[0])
        """
        使用raise可以把异常再次抛出
        """
        raise


def divide(x, y):
    try:
        result = x / y
    except ZeroDivisionError:
        print("division by zero!")
    """
    try except 语句还有一个可选的 else 子句,如果使用这个子句,那么必须放在所有的 except 子句 
    之后。这个子句将在 try 子句没有发生任何异常的时候执行。
    """
    else:
        print("result is", result)
    finally:
        """
        如果一个异常在 try 子句里(或者在 except 和 else 子句里)被抛出,而又没有任何的 except 把它截住,那么这个异常会在 finally 子句执行后再次被抛出
        """
        print("executing finally clause")


if __name__ == '__main__':
    exception_operation()
    divide(2, 3)
    """
    关键词 with 语句就可以保证诸如文件之类的对象在使用完之后一定会正确的执行他的清理方法
    """
    with open("myfile.txt") as f:
        for line in f:
            print(line, end="")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值