zoukankan      html  css  js  c++  java
  • Python学习笔记006_异常_else_with

    >>> # try-except语句
    >>> 
    >>> # try :
    >>> #    检测范围
    >>> # except Exception[as reason]:
    >>> #    出现异常(Exception)后的处理代码
    >>> 
    >>> try :
        file = open("我是一个你找不到的文件.txt")
        print(file.read())
        file.close()
        # 下面的reason是一个变量,名称可以随意的
    except OSError as reason:
        print('文件出错啦!
    具体原因是:'+str(reason))
    
        
    文件出错啦!
    具体原因是:[Errno 2] No such file or directory: '我是一个你找不到的文件.txt'
    >>> 
    >>> # try 后面可以跟多个except语句块
    >>> 
    >>> try :
        num = 1+'1'
        file = open("我是一个你找不到的文件.txt")
        print(file.read())
        file.close()
    except OSError as reason:
        print('文件出错啦!
    具体原因是:'+str(reason))
    except TypeError as reason:
        print('类型出错!
    具体原因是:'+str(reason))
    
        
    类型出错!
    具体原因是:unsupported operand type(s) for +: 'int' and 'str'
    >>> 
    >>> # 也可以将几个异常一起处理
    >>> try :
        num = 1+'1'
        file = open("我是一个你找不到的文件.txt")
        print(file.read())
        file.close()
        # 下面的reason是一个变量,名称可以随意的
    except (OSError,TypeError )as reason:
        print('出错;!
    具体原因是:'+str(reason))
    
        
    出错;!
    具体原因是:unsupported operand type(s) for +: 'int' and 'str'
    >>> # 当try语句块中某一行出错时,直接到except块中进行捕获,后面的代码不在被执行
    >>> # try后面不根任何异常名称,将会捕获所有的异常
    >>> 
    >>> try :
        int('ab')
        num = 1+'1'
        file = open("我是一个你找不到的文件.txt")
        print(file.read())
        file.close()
        # 下面的reason是一个变量,名称可以随意的
    except (OSError,TypeError )as reason:
        print('出错;!
    具体原因是:'+str(reason))
    except :
        print('出错')
    
        
    出错
    >>> 
    >>> # try-finally语句
    >>> #
    >>> # try :
    >>> #    检测范围
    >>> # except Exception[as reason]:
    >>> #    出现异常(Exception)后的处理代码
    >>> # finally :
    >>> #    无论如何都会执行的代码
    >>>  
    >>> try :    
        file = open("我是一个你找不到的文件.txt",'w')
        print(file.write('我存在了'))
        #这里出错,文件还没有关闭,写入的内容就不会到文件中去
        num = 1+'1'
    except (OSError,TypeError )as reason:
        print('出错;!
    具体原因是:'+str(reason))
    finally :
        file.close()
    
        
    4
    出错;!
    具体原因是:unsupported operand type(s) for +: 'int' and 'str'
    

    >>> 
    >>> #  手动抛出一个异常  raise
    >>> raise
    Traceback (most recent call last):
      File "<pyshell#67>", line 1, in <module>
        raise
    RuntimeError: No active exception to reraise
    >>> raise ValueError('不能处理的值')
    Traceback (most recent call last):
      File "<pyshell#68>", line 1, in <module>
        raise ValueError('不能处理的值')
    ValueError: 不能处理的值
    >>> 

    #丰富的else
    >>> #1, 要么怎样,要么不怎样 if else 的用法 不再赘述
    >>> #2, 干完了能怎样,干不完别想怎样 与while for搭配使用
    >>> #3, 没有问题,那就干吧 与异常处理机制搭配
    >>>
    >>> # else 只在循环正常完成之后执行,如果是从break中跳出来的就不会被执行
    >>>

    def showMaxFactor(num) :
        '这是一个求最大公约数的函数'
        count = num // 2
        while count > 1:
            if num % count == 0:
                print('%d最大公约数是%d' %(num,count))
                break
            count -= 1
        else :
            print('%d是素数!' %num)
            
    num = int (input('请输入一个数字:'))
    showMaxFactor(num)
    ============== RESTART: C:/Users/Administrator/Desktop/else.py ==============
    请输入一个数字:12
    12最大公约数是6
    >>> 
    ============== RESTART: C:/Users/Administrator/Desktop/else.py ==============
    请输入一个数字:7
    7是素数!

    >>># try 语句块中没有任何异常才执行else,否则不执行

    try :
        int ('123')
    except ValueError as reason:
        print('出错了:'+str(reason))
    else:
        print('没有任何异常1')

    # Python使用with语句,可以省去关闭文件,with会帮助我们去关闭文件

    try:
        f = open('data.txt','w')
        for each_line in f:
            print(each_line)
    except OSError as reason:
        print('出错啦:'+str(reason))
    finally:
        f.close()
    # 改成with语句 
    try:
        with open('data.txt','w') as file:
            for each_line in file:
                print(each_line)
    except OSError as reason:
        print('出错啦:'+str(reason))
    ----------- 赠人玫瑰,手有余香     如果本文对您有所帮助,动动手指扫一扫哟   么么哒 -----------


    未经作者 https://www.cnblogs.com/xin1006/ 梦相随1006 同意,不得擅自转载本文,否则后果自负
  • 相关阅读:
    centos7环境下搭建redis及springboot连接集成
    SSL配置及练习
    centos7 环境下 搭建mysql数据库
    centos7 集群免密码登录
    IDEA如何设置spring-boot-devtools即所见即所得
    GitHub之分支创建
    联机SSH访问本地虚机环境
    2.7.3版本hadoop之HDFS环境搭建之浅谈
    Idea 打包maven项目 以及spring boot 的自动配置
    VoLTE Spec 87 Documents
  • 原文地址:https://www.cnblogs.com/xin1006/p/4966150.html
Copyright © 2011-2022 走看看