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. zabbix创建钉钉报警

    https://juejin.im/post/5c8708eef265da2dd168a1c1 简介 家里搭建了zabbix去监控主机,邮件报警什么的都太麻烦了,所以直接使用钉钉机器人来提醒,下面是我 ...

  2. MapServer教程2

    第二章 Tutorial 教程 MapServer Tutorial MapServer教程 Tutorial background 教程背景 Section 1: Static Maps and t ...

  3. MongoDB数据迁移

    将集合user从192.168.1.12:27017导入到192.168.1.120:27017 数据的导出:mongoexport 数据的导入:mongoimport 导出集合user的过程: [r ...

  4. linux使用apache发布静态html网页

    环境 centOS7+httpd 安装httpd 安装 #检查是否安装和httpd rpm -qa | grep httpd #如果没安装 yum -y install httpd 启动httpd并验 ...

  5. 由length、length()、size()引发的挖掘

    在java中可能会经常用到这几个属性或者方法, 那么今天就来仔细研究一下 length——数组的属性: length()——String的方法: size()——集合的方法: 1.数组.length属 ...

  6. 让dcef3支持mp3和h.264 mp4解码播放

    嵌入式Chromium框架(简称CEF) 是一个由Marshall Greenblatt在2008建立的开源项目,它主要目的是开发一个基于Google Chromium的Webbrowser控件.CE ...

  7. 页面跳转(包括vue路由)

    1.JS实现页面跳转 1.1 使用window.location的href属性跳转 window.location.href = 'http://www.baidu.com';此处window可以省略 ...

  8. poj3280Cheapest Palindrome

    给定一个字符串S,字符串S的长度为M(M≤2000),字符串S所含有的字符的种类的数量为N(N≤26),然后给定这N种字符Add与Delete的代价,求将S变为回文串的最小代价和. Input 第一行 ...

  9. < 备考CET6 - 作文模板句 - 话题:重要性/做选择 >

    CET6 - 作文模板句 - 重要性/做选择 重要性 开头 Currently, We are entering a brand new era filled with (opportunities  ...

  10. 《STL源码剖析》——第七、八章:仿函数与接配器

    第七章:仿函数  7.1.仿函数(函数对象)概观 STL仿函数的分类,若以操作数(operand)的个数划分,可分为一元和二元仿函数,若以功能划分,可分为算术运算(Arithmetic).关系运算(R ...