>>> # try-except语句
>>>
>>> # try :
>>> #    检测范围
>>> # except Exception[as reason]:
>>> #    出现异常(Exception)后的处理代码
>>> 
>>> try :
    file = open("我是一个你找不到的文件.txt")
    print(file.read())
    file.close()
    # 下面的reason是一个变量,名称可以随意的
except OSError as reason:
    print('文件出错啦!\n具体原因是:'+str(reason))

文件出错啦!
具体原因是:[Errno 2] No such file or directory: '我是一个你找不到的文件.txt'
>>>
>>> # try 后面可以跟多个except语句块
>>>
>>> try :
    num = 1+'
    file = open("我是一个你找不到的文件.txt")
    print(file.read())
    file.close()
except OSError as reason:
    print('文件出错啦!\n具体原因是:'+str(reason))
except TypeError as reason:
    print('类型出错!\n具体原因是:'+str(reason))

类型出错!
具体原因是:unsupported operand type(s) for +: 'int' and 'str'
>>>
>>> # 也可以将几个异常一起处理
>>> try :
    num = 1+'
    file = open("我是一个你找不到的文件.txt")
    print(file.read())
    file.close()
    # 下面的reason是一个变量,名称可以随意的
except (OSError,TypeError )as reason:
    print('出错;!\n具体原因是:'+str(reason))

出错;!
具体原因是:unsupported operand type(s) for +: 'int' and 'str'
>>> # 当try语句块中某一行出错时,直接到except块中进行捕获,后面的代码不在被执行
>>> # try后面不根任何异常名称,将会捕获所有的异常
>>>
>>> try :
    int('ab')
    num = 1+'
    file = open("我是一个你找不到的文件.txt")
    print(file.read())
    file.close()
    # 下面的reason是一个变量,名称可以随意的
except (OSError,TypeError )as reason:
    print('出错;!\n具体原因是:'+str(reason))
except :
    print('出错')

出错
>>>
>>> # try-finally语句
>>> #
>>> # try :
>>> #    检测范围
>>> # except Exception[as reason]:
>>> #    出现异常(Exception)后的处理代码
>>> # finally :
>>> #    无论如何都会执行的代码
>>>
>>> try :
    file = open("我是一个你找不到的文件.txt",'w')
    print(file.write('我存在了'))
    #这里出错,文件还没有关闭,写入的内容就不会到文件中去
    num = 1+'
except (OSError,TypeError )as reason:
    print('出错;!\n具体原因是:'+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 (')
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))

Python学习笔记006_异常_else_with的更多相关文章

  1. python学习笔记5_异常

    python学习笔记5_异常 1.什么事异常 Python使用异常对象(exception object) 来表示异常情况.遇到错误会发生异常. 如果异常对象未被处理或被捕捉,程序就会用所谓的回溯(t ...

  2. Python学习笔记 - day8 - 异常

    异常 在程序运行过程中,总会遇到各种各样的错误.有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,有的错误是用户输入造成的,比如让用户输入email地址,结果得到一个空字符串,这种 ...

  3. 【目录】Python学习笔记

    目录:Python学习笔记 目标:坚持每天学习,每周一篇博文 1. Python学习笔记 - day1 - 概述及安装 2.Python学习笔记 - day2 - PyCharm的基本使用 3.Pyt ...

  4. 【python学习笔记】8.异常

    [python学习笔记]8.异常 raise Exception: 抛出指定异常 try/except: 捕捉异常 except: 第一个参数是需要捕获的异常类型,可以是多个类型组成元组,第二个参数是 ...

  5. python学习笔记(六)文件夹遍历,异常处理

    python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...

  6. 【Python学习笔记之二】浅谈Python的yield用法

    在上篇[Python学习笔记之一]Python关键字及其总结中我提到了yield,本篇文章我将会重点说明yield的用法 在介绍yield前有必要先说明下Python中的迭代器(iterator)和生 ...

  7. 雨痕 的《Python学习笔记》--附脑图(转)

    原文:http://www.pythoner.com/148.html 近日,在某微博上看到有人推荐了 雨痕 的<Python学习笔记>,从github上下载下来看了下,确实很不错. 注意 ...

  8. Python学习笔记之生成器、迭代器和装饰器

    这篇文章主要介绍 Python 中几个常用的高级特性,用好这几个特性可以让自己的代码更加 Pythonnic 哦 1.生成器 什么是生成器呢?简单来说,在 Python 中一边循环一边计算的机制称为 ...

  9. Python学习笔记之文件处理

    1.打开和关闭 要打开文件可以使用函数 open(),它位于自动导入模块 io 中.函数将文件名作为唯一不可缺少的函数,并返回一个文件对象.它还有一个名叫 mode 的参数,用于指定文件模式,其可取值 ...

随机推荐

  1. let、var、const声明的区别

    前言 看了方应杭老师的一篇解释let的文章,对JavaScript中的声明有了深刻的理解,这里也就有了总结一下JavaScript中各种声明之间区别的这篇文章. JavaScript中变量声明机制 首 ...

  2. Ubuntu Docker 安装和配置 GitLab CI 持续集成

    相关文章: Ubuntu Docker 简单安装 GitLab 劈荆斩棘:Gitlab 部署 CI 持续集成 目的:在 Ubuntu 服务器上,使用 Docker 安装和配置 GitLab Runne ...

  3. Java获取精确到秒的时间戳(转)

    1.时间戳简介: 时间戳的定义:通常是一个字符序列,唯一地标识某一刻的时间.数字时间戳技术是数字签名技术一种变种的应用.是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01 ...

  4. MySQL 网络访问连接

    查看 /etc/hosts配置文件 [hotspot@bogon ~]$ cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localh ...

  5. Http2改造实践:statusText丢失问题

    背景: 1.项目中的nginx由http1.1改造为http2, 2.代码中采用axios的interceptors做统一返回处理,对于系统逻辑性错误弹窗(例如:表单字段唯一性校验弹窗提示) 现象: ...

  6. Linux Command Line learning

    https://www.codecademy.com/en/courses/learn-the-command-line Background The command line is a text i ...

  7. Mysql中使用聚合函数对null值的处理

    平时因为对于数据库研习的不深,所以在面试的时候问了一些平常遇到过的问题居然没法很肯定地回答出来,实在让自己很恼怒! 这次让我记忆深刻的一个问题是: 在mysql中使用聚合函数的时候比如avg(t),t ...

  8. ORACLE SEQUENCE的简单介绍

    先假设有这么一个表: create table S_Depart ( DepartId INT not null, DepartName NVARCHAR2() not null, DepartOrd ...

  9. diff.js 列表对比算法 源码分析

    diff.js列表对比算法 源码分析 npm上的代码可以查看 (https://www.npmjs.com/package/list-diff2) 源码如下: /** * * @param {Arra ...

  10. 32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数

    32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数 (如果想看所有代码,请下载课堂资料,里面有所有代码,这里会讲解怎么生成一个窗口程序) 一丶32位汇编编写Windows窗口程序 首 ...