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. BZOJ 1112: [POI2008]砖块Klo Splay + 性质分析

    Code: #include<bits/stdc++.h> using namespace std; #define setIO(s) freopen(s".in",& ...

  2. codeforces 848B - Rooter's Song(构造+几何)

    原题链接:http://codeforces.com/problemset/problem/848/B 题意:好多个人分别从x,y轴不同位置不同时间往垂直坐标轴方向移动,一旦相遇他们转向,问所有人的到 ...

  3. Python_008(文件操作)

    一.文件操作 1.只读操作 f = open("taibai.txt",mode = "r",encoding = "utf-8" s = ...

  4. 数据库的目录IDF打不开!附加失败

    选择附加数据库,结果 武汉地图打不开 这是mapgis k9里面自带的地图 IDF:Identity Definition File?https://zhidao.baidu.com/question ...

  5. DELPHI 把数据库中的数据转换成XML格式

    function ReplaceString(AString: string): string; begin Result := StringReplace(AString, '&', '&a ...

  6. Java学习、面试、求职、干货资源精品合集

    本系列文章整合了本号发表和转载过的,有关Java学习.进阶.面试.做项目.求职经验等方面的文章,希望对想要找工作,以及正在找工作的你,能够有所帮助. 原创Java学习专题文章: 如何才能够系统地学习J ...

  7. webApp 页面布局

    1. 流式布局 概念:流式布局是页面元素宽度按照屏幕分辨率进行适配调整,但是整体布局不变. 设计方法:布局都是通过百分比来定义宽度,但是高度大都是用px固定的. 弊端: 虽然可以让各种屏幕适配,但是显 ...

  8. docker 配置sonatype/nexus3

    docker search nexusdocker pull sonatype/nexus3mkdir -p /dockermaven/nexus-datachmod -R 777 /dockerma ...

  9. statistics——数学统计函数

    statistics——数学统计函数 转自:https://blog.csdn.net/zhtysw/article/details/80005410 资源代码位置:Lib/statistixs.py ...

  10. mysql.connector.errors.ProgrammingError: 1698 (28000): Access denied for user 'root'@'localhost'

    排错,首先在sql编辑工具 通过测试连接,查看一下自己的密码是否正确 : 由此可见,是自己的密码错误,输入正确的密码后 在这里把密码修改为正确之后程序运行正常 #初始化数据库连接 engine = c ...