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. 用Jquery方法实现的简单下滑菜单效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. Android9.0特性

    这篇文章,是Android官方文档的中文版本. 注意事项(AndroidP 特性): (1),android.os.Build.VERSION.RELEASE ,需要当做字符串类型处理. (2),依赖 ...

  3. 顺序表 C++ 类模板实现

    顺序表的C++语言描述 基本运算的算法——置空表.求表的长度.取结点.定位运算.插入运算.删除运算.建立顺序表.输出顺序表 #include <iostream>using namespa ...

  4. 去掉注释index.html

    <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Conten ...

  5. MIME TYPE是什么?

    首先,我们要了解浏览器是如何处理内容的.在浏览器中显示的内容有 HTML.有 XML.有 GIF.还有 Flash ……那么,浏览器是如何区分它们,决定什么内容用什么形式来显示呢?答案是 MIME T ...

  6. 【Unity知识点】安卓游戏如何在切后台后继续运行

    解决方法很简单,在android项目AndroidManifest.xml文件中的activity中添加如下内容: android:configChanges="fontScale|keyb ...

  7. TensorFlow学习笔记3-从MNIST开始

    TensorFlow学习笔记3-从MNIST开始学习softmax 本笔记内容为"从MNIST学习softmax regression算法的实现". 注意:由于我学习机器学习及之前 ...

  8. Parameter Initializations in Deep Learning

    全零初始化的问题: 在Linear Regression中,常用的参数初始化方式是全零,因为在做Gradient Descent的时候,各个参数会在输入的各个分量维度上各自更新.更新公式为: 而在Ne ...

  9. pandas基础(第一章(一))

    摘要:通过简单例子,了解功能.以此作为基点,在工作中不断深入 1.设置需要显示的行列宽度(显示的最大列数和最大行数,其余部分用.....表示) 设置显示多少行多少列 import pandas as ...

  10. JavaScript.Remove

    Array.prototype.remove = function (from, to) {     var rest = this.slice((to || from) + 1 || this.le ...