• Python:异常处理


    在写代码里非常多的时候我会遇到处理异常的情况,为了保证程序遇到异常能够快速处理,今天我需要整理写一下处理异常的笔记:

    • 基本try - except 语句
    • 捕捉特定异常:except XXX :
    • else子句
    • finlly子句
    • 使用异常对象: except XXX as xx :
    • 抛出异常: raise XXX
    • 断言 accert 

    基本try-except语句

    try:
        n = int(input("请输入一个正整数:"))
        print("the number is %d" % n)
    except:
        print("NONONO,the number is not > 0")

    捕捉特定异常  / 使用异常对象

    #捕捉Type异常
    try:
        n = input("请输入一个正整数:")
        print("the number is %d" % n)
    except TypeError:
        print("tpye is not right!!")
    
    >>>请输入一个正整数:1
    tpye is not right!!
    
    
    #使用ValueError异常
    try:
        n = int(input("请输入一个正整数:"))
        print("the number is %d" % n)
    except ValueError as err:
        print("NONONO,you have a error:",err)
    
    >>>请输入一个正整数:1.1
    NONONO,you have a error: invalid literal for int() with base 10: '1.1'
    
    #invalid literal for int() with base 10: '1.1'       这一段就是err的内容

    else子句

    '''
    不发生异常,我们往往会希望执行一些额外的代码,这可以通过 else 子句轻松地实现
    '''
    try:
        n = int(input("请输入一个正整数:"))
    
    except ValueError as err:
        print("NONONO,you have a error:",err)
    
    #以上的问题则执行
    else:
        print("okok!!")
        print("the number is %d" % n)

    finlly子句

    '''
    无论什么情况,finally子句都会被执行,通常用于释放外部资源。一旦使用,无论文件是否打开成功,都必须清理资源。所以,在 finally 子句中使用 close(),可以确保即使发生异常,文件也能够被关闭.
    例如,操作一个文件:
    '''
    try:
        f = open("C:\Users\BEAR\Desktop\Training\kk.txt")
        while True:
            s = input()
            if s.upper() == "Q":break
            f.write(s+"
    ")
    
    except Keyboardinterrupt as ke :
        print("按Ctrl+c快捷键程序终止:",ke)
    
    finally:
        print('正常关闭文件~')
        f.close()

    强行抛出异常 / 自定义异常

    '''
    强行抛出异常
    当程序出现错误,python会自动引发异常,也可以通过 raise 强制引发异常。一旦执行了raise 语句,raise后面的语句将不能执行。
    强行抛出内建异常
    '''
    def print_num(num):
        if(num > 5 or num < 1):
    
            raise NameError          #没错,在这里
    
        print("num:{0}".format(num))
    
    
    print_num(2)
    
    try:
        print_num(6)
    except NameError:
        print('NONONO!Name Error')
    
    #输出
    num:2
    NONONO!Name Error
    '''
    自定义异常
    如果要抛出自定义异常,首先根据需要,可以定义一个异常的class,选择好继承关系,然后,用raise语句抛出一个异常的实例。
    '''
    #创建一个numError继承异常的基类
    class numError(Exception):
        def __init__(self, data):
            self.data = data
    
    def print_num(num):
        if (num > 5 or num < 1):
    
            raise numError("error!!!!!!!!!")     #没错,在这里
    
        print("num:{}".format(num))
    
    print_num(0)
    
    #输出
     raise numError("error!!!!!!!!!")

    断言 

    '''
    断言 accert
    一般用于程序中置入检查
    '''
    #后面条件为真,程序继续
    accert 4 > 3
    
    #后面条件为假,程序自爆
    accert 3 > 4
  • 相关阅读:
    [转载] Calculating Entropy
    Android Studio apk 文件路径
    [转载]网站建设公司赚钱的案例分析
    写essay和research paper必用的17个网站
    how to use javap command
    How To Create a Personal Balance Sheet
    Top 10 Universities for Artificial Intelligence
    卡内基梅隆大学如何培养计算机博士
    Java Inner Classes
    End of HTML blink tag
  • 原文地址:https://www.cnblogs.com/kumata/p/9397994.html
Copyright © 2020-2023  润新知