day20 python
 
一.异常处理
    1.什么是异常, 常见异常有:
        逻辑错误
'''
name
Traceback (most recent call last):                  #问题的回溯, 定位你的问题是在哪个位置发生的: 哪个文件, 哪个行, 哪个代码
  File "C:/Users/THINKPAD/PycharmProjects/s15/day01/practice.py", line 3038, in <module>
    name
NameError: name 'name' is not defined                #错误类型, 错误类型是有限的: 具体的错误提示
'''
 
[][1]           #IndexError: list index out of range
{}['key']       #KeyError: 'key'
import bajie    #ModuleNotFoundError: No module named 'bajie'
int('bajie')    #ValueError: invalid literal for int() with base 10: 'bajie'
        
        语法错误: 写代码的时候就要规避掉
if          #SyntaxError: invalid syntax
    
    2.什么时候最容易出异常, 当你处理的内容不确定的时候
        有用户参与
        有外界数据介入的: 比如从文件中读取, 从网络上获取
    3.异常的所有种类
    4.异常报错,追溯有很多行报错时:
        是什么原因的多行报错: 多层嵌套调用的过程中, 如果内部的代码出了问题, 外部所有调用的地方都会成为报错追溯信息的一部分
        如何解决: 看报错的最后一样, 如果有源码文件, 那么从下往上找, 找到自己写的代码, 然后排查
def func1():
    name
def func2():
    func1()
def main():
    func2()
main()
 
    5.什么是异常, 异常发生后, 代码就不执行了(程序崩溃)
    6.什么是异常处理:
        python解释器检测到错误, 触发异常(也允许程序员自己触发异常)
        程序员编写特定的代码, 专门来捕捉这个异常
        如果捕捉成功则进入另外一个分支, 执行你为其定制的逻辑, 是程序不会崩溃, 这就是异常处理
lst = [1,2,3]
try:
    num = int(input('(0/1/2): '))     #被异常处理机制包围的代码
    print(lst[num])
except ValueError:                  #except处理的异常必须和实际报错的异常一样才能处理
    print('please input a int')
except IndexError:                  #可以写多个except: 叫多分支.程序从上到下只要找到一个except, 下面的就不会找了
    print('0/1/2 ok?')
        
        多分支的合并
lst = [1,2,3]
try:
num = int(input('(0/1/2): '))
print(lst[num])
except (ValueError, IndexError) as e:   #保留系统的Error原因到变量e中
print('Error: %s' % e)
        
        万能异常: 等你所有的程序都开发完了, 你才开始用万能异常(也可以给整个函数加万能异常)
            as 能将具体错误原因打印出来
try:
    num = int(input('(0/1/2): '))
except Exception as e:
    print('Error: %s' % e)
        
        万能异常
try:
    num = int(input('(0/1/2): '))
except:
    print('Error: %s')
 
 
二.else分支与finally分支
try:
    print('aaa')
    name
except Exception as e:
    print('error: %s' % e)
else:
    print('no error')                #当try没有发异常时, else分支才执行, 否则不执行
finally:
    print('my name is bajie')         #爱谁谁, 最后总执行(就算你有异常, 也要等我执行完, 程序才能退出),try中有return, 我也要执行完再return
 
with open('filename', mode='r') as f:   #with也可以自动关文件, 但是这个据说有三个异常处理不了, 文件就没法关, 所以finally比较强大
    f.readline()
    
    异常处理的组合: else必须要有except
try ... except ...
try ... except ...except ...
try ... except ... else...
try ... except ... finally ...
try ... except ... else ... finally ...
try ... finally ...
 
三.主动抛出异常
raise ValueError                                        #你不能给用户抛异常
raise ValueError('you are error on this line')                #是用来给程序员抛异常的
 
四.断言
assert True             #assert 后面跟的是bool类型的东西, 条件满足往下执行
print('bajie')
assert False            #assert 后面跟的是bool类型的东西, 条件不满足往下的都不执行, 而且会抛出AssertionError
print('wukong')
assert True             
print('datang')
 
五.自定义异常(面向对象之才能做)
 
六.异常处理的忠告: 没有开发完成不能在最后的main()外加异常, 要在具体可能发生的语句上加异常
 
 
 
 
 
 
 
 
 
 

day20 python异常处理 try except的更多相关文章

  1. python异常处理(基础)

    之前在学习python的时候有整理过python异常处理的文章,不够简单也不够完整,所以决定再整理一篇,算做补充. http://www.cnblogs.com/fnng/archive/2013/0 ...

  2. Python异常处理 分类: python Raspberry Pi 服务器搭建 2015-04-01 13:22 172人阅读 评论(0) 收藏

    一个程序要保持稳定运行必须要有异常处理,本文将简单介绍Python中的try-except..异常处理语句的使用. 该种异常处理语法的规则是: 执行try下的语句,如果引发异常,则执行过程会跳到第一个 ...

  3. Python 异常处理--raise函数用法

    raise语句手工引发一个异常: "raise" [expression ["," expression ["," expression]] ...

  4. [Python学习笔记][第八章Python异常处理结构与程序调试]

    1/30 第八章Python异常处理结构与程序调试 异常处理 try-except结构 try: try块 except Exception: except块 try-except-else结构 tr ...

  5. python异常处理try,except,else,finally,raise

    先看下else的使用: try: ... exception: ... else: ... 只有在try中没有发生任何异常,所有代码完全成功的情况下才会转入else 再看下finally: final ...

  6. Python 异常处理

    Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Python教程会具体介绍. 断言 ...

  7. python异常处理的哲学

    所谓异常指的是程序的执行出现了非预期行为,就好比现实中的做一件事过程中总会出现一些意外的事.异常的处理是跨越编程语言的,和具体的编程细节相比,程序执行异常的处理更像是哲学.限于认知能力和经验所限,不可 ...

  8. Python异常处理总结

    一.何谓异常处理 在我们调试程序时,经常不可避免地出现意料之外的情况,导致程序不得不停止运行,然后提示大堆提示信息,大多是这种情况都是由异常引起的.异常的出现一方面是因为写代码时粗心导致的语法错误,这 ...

  9. python异常处理与断言以及日志模块

    python异常处理与断言 目录: 1.异常处理 2.断言(assert) 3.日志模块(logging) 4.修改之前的车票信息查询,把日志模块.异常处理加进去 1.异常处理 代码如下: 语法: t ...

随机推荐

  1. Python3解leetcode Subtree of Another Tree

    问题描述: Given two non-empty binary trees s and t, check whether tree t has exactly the same structure ...

  2. ckeditor富文本编辑器的使用和图片上传,复制粘贴图片上传

    自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...

  3. 北风设计模式课程---备忘录(Memento)模式

    北风设计模式课程---备忘录(Memento)模式 一.总结 一句话总结: 备忘录模式也是一种比较常用的模式用来保存对象的部分用于恢复的信息,和原型模式有着本质的区别,广泛运用在快照功能之中.同样的使 ...

  4. What code you will get when you create a wcf library

    创建wcf服务库的时候,系统自动生成的代码 // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”. [ServiceContract] publ ...

  5. 纯文本编辑语言markdown

    Markdown的主要目的是生成可以复制到网页或写入平台的HTML代码.但你不必那样使用它.Markdown也可以作为强大记笔记的基础,许多Markdown编辑可以将您的写作导出为其他格式,如Word ...

  6. ElasticSearch ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only / allow delete (api)]锁定状态,无法插入数据

    PUT /twitter/_settings { "index.blocks.read_only_allow_delete": null } 官网给出的解决办法

  7. 《图解设计模式》读书笔记3-3 Builder模式

    目录 示例程序 类图 代码 角色 思路拓展 谁知道什么 构造和实现分离 和Template Method模式的区别和联系? Builder模式即建造者模式,利用这个模式可以组装具有复杂结构的实例. 示 ...

  8. python实现处理excel单元格中的数据

    实现代码如下: # 将数据单元格(格式为:参数名=值)里的数据以键值对的形式放入字典中,返回该字典 class get_string: def cut_string(self,string): # 将 ...

  9. 在Linux上安装MySQL

    一.获取mysql YUM源    打开网址:https://dev.mysql.com/downloads/repo/yum/,选择对应linux版本 点击“No thanks, just star ...

  10. ToString()的简单介绍

    1.在某一个类中重写该类的toString()方法,是为了方便打印该类实例中的内容.