zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    GPU CUDA之——深入理解threadIdx
    需求分析、业务逻辑与数据结构
    软件建模的本质
    浅谈软件需求建模
    软件建模即程序设计
    软件开发从0到1与软件建模
    数据模型所描述的内容包括三个部分:数据结构、数据操作、数据约束。
    观察力与信息搜集能力
    人类为什么写书
    鲁宾斯坦说:"思维是在概括中完成的。"
  • 原文地址:https://www.cnblogs.com/kumata/p/9397994.html
Copyright © 2011-2022 走看看