今天的内容比较少,只是单独的异常处理

开始今日份整理

1.异常

定义:异常时错误发生的信号,一旦出错,并且程序没有处理这个错误,就会抛出异常,并且程序会运行中止

2.异常的分类

2.1语法错误:python会在运行之前,会先检查语法是否错误,这个是程序员代码中不应该出现的,需要时刻注意

2.2逻辑错误:(常见)

  • ValueError
  • NameError
  • IndexError
  • KeyError
  • AttributeError
  • TypeError
  • Exception:万能错误参数

3.异常的处理

  • 强调一:对于错误的条件可以预知的,此时应该用if判断来预防
  • 强调二:对于错误发生的条件不可预知的,应该用异常处理机制进行判断

第一种方式:单分支机构,try………except………

  1. try:
  2. l1 = [1,2,3]
  3. l1[100] # IndexError
  4. print(333)
  5. print(5555)
  6. # dic = {'key1':'v1'}
  7. # dic['key2'] # KeyError
  8. print(777)
  9. except IndexError as e:
  10. print(e)

第二种方式:多分支机构,try .except  except ....多支

  1. try:
  2. l1 = [1,2,3]
  3. # l1[100] # IndexError
  4. print(333)
  5. print(5555)
  6. dic = {'key1':'v1'}
  7. # dic['key2'] # KeyError
  8. num = int(input('请输入选项:'))
  9. print(777)
  10. except IndexError as e:
  11. print(e)
  12. except KeyError as e:
  13. print(e)

第三种方式:万能异常  Exception

  1. try:
  2. l1 = [1,2,3]
  3. # l1[100] # IndexError
  4. print(333)
  5. print(5555)
  6. dic = {'key1':'v1'}
  7. # dic['key2'] # KeyError
  8. num = int(input('请输入选项:'))
  9. print(777)
  10. except Exception as e:
  11. print(e)

# 以上这三种分情况讨论:
# 1,如果你对报错信息不关系,只是想直接跳过报错而不分流执行代码。 万能异常最好。
# 2,如果你想要捕捉具体的错误信息,根据不同的错误执行不同的分支。多分支比较好

第四种方式:多分支加万能异常

  1. try:
  2. num = input('请输入你要办理的业务:').strip()
  3. num = int(num)
  4. menu_dict[num]()
  5. except ValueError:
  6. print('请输入数字')
  7. except KeyError:
  8. print('超出范围,请重新输入')
  9. except Exception:
  10. print("出现未知错误.....")

第五种方式,主动触发异常,之前有用过,

  1. try:
  2. raise TypeError('类型错误')
  3. except Exception as e:
  4. print(e)

第六种方式,断言,代码完成有明确的结果

  1. assert ('name' in info)and ('age' in info)
  2. #有着明确的结果

第七种方式,自定义异常类型,

毕竟异常的种类不是一成不变的,有可能异常的种类还是一直在增加,这个时候就需要自己创建一个异常种类了

  1. class PhoneconnectionError(BaseException):#手机连接失败
  2. pass
  3.  
  4. try:
  5. raise PhoneconnectionError('连接错误...')
  6. except PhoneconnectionError as e:
  7. print(e)

最后的最后,在代码中尽量少用try开头,except 结尾,这样根本看不到自己的代码有什么问题。

day17-异常处理的更多相关文章

  1. day17 9.关闭资源与异常处理

    Java程序跟任何外部设备进行连接之后,都要把连接断开,把资源释放掉.Connection是一个重量级资源,Connecton占内存,Connection的获取是比较消耗资源和内存的.finally是 ...

  2. 关于.NET异常处理的思考

    年关将至,对于大部分程序员来说,马上就可以闲下来一段时间了,然而在这个闲暇的时间里,唯有争论哪门语言更好可以消磨时光,估计最近会有很多关于java与.net的博文出现,我表示要作为一个吃瓜群众,静静的 ...

  3. 基于spring注解AOP的异常处理

    一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...

  4. 异常处理汇总 ~ 修正果带着你的Net飞奔吧!

    经验库开源地址:https://github.com/dunitian/LoTDotNet 异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983 ...

  5. JavaScript var关键字、变量的状态、异常处理、命名规范等介绍

    本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...

  6. IL异常处理

    异常处理在程序中也算是比较重要的一部分了,IL异常处理在C#里面实现会用到一些新的方法 1.BeginExceptionBlock:异常块代码开始,相当于try,但是感觉又不太像 2.EndExcep ...

  7. Spring MVC重定向和转发以及异常处理

    SpringMVC核心技术---转发和重定向 当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器.对于 ...

  8. 【repost】JS中的异常处理方法分享

    我们在编写js过程中,难免会遇到一些代码错误问题,需要找出来,有些时候怕因为js问题导致用户体验差,这里给出一些解决方法 js容错语句,就是js出错也不提示错误(防止浏览器右下角有个黄色的三角符号,要 ...

  9. 札记:Java异常处理

    异常概述 程序在运行中总会面临一些"意外"情况,良好的代码需要对它们进行预防和处理.大致来说,这些意外情况分三类: 交互输入 用户以非预期的方式使用程序,比如非法输入,不正当的操作 ...

  10. 关于bug分析与异常处理的一些思考

    前言:工作三年了,工作内容主要是嵌入式软件开发和维护,用的语言是C,毕业后先在一家工业自动化控制公司工作两年半,目前在一家医疗仪器公司担任嵌入式软件开发工作.软件开发中,难免不产生bug:产品交付客户 ...

随机推荐

  1. javascript深入理解js闭包(转载)

    此篇文章来源于http://www.jb51.net/article/24101.htm 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全 ...

  2. 最快的进程间通信方式你get了么

    前言:天下武功为快不破!在信息爆炸.快速发展的新时代...,扯远了....进程间通信方式有很多,但最快的方式你知道么?由我娓娓道来... 一.共享内存方式 主角闪亮登场了,噔噔瞪...,最快的方式就是 ...

  3. JavaScript面向对象--继承 (超简单易懂,小白专属)

    一.继承的概念 子类共享父类的数据和方法的行为,就叫继承. 二.E55如何实现继承?探索JavaScript继承的本质 2.1构造函数之间的"复制粘贴" 第一条路是通过构造函数来继 ...

  4. React Native (一) 入门实践

    上周末开始接触react native,版本为0.37,边学边看写了个demo,语法使用es6/7和jsx.准备分享一下这个过程.之前没有native开发和react的使用经验,不对之处烦请指出.笔者 ...

  5. Python:Selenium 1:浏览器驱动

    Selenium是一个用于测试网站的自动化测试工具,爬虫中也经常用到,支持各种浏览器包括Chrome.Firefox.Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器. 自Web ...

  6. Jvm垃圾回收器(算法篇)

    在<Jvm垃圾回收器(基础篇)>中我们主要学习了判断对象是否存活还是死亡?两种基础的垃圾回收算法:引用计数法.可达性分析算法.以及Java引用的4种分类:强引用.软引用.弱引用.虚引用.和 ...

  7. Linux 清理boot分区

    今天一登录虚拟机  就被提示boot空间不足 于是赶紧看了下 还有9.2M,刚安装的时候好好的,为什么用了一段时间后就提示空间不足呢? 原因是使用yum update升级内核后  boot分区中就多了 ...

  8. 谈谈iOS获取调用链

    本文由云+社区发表 iOS开发过程中难免会遇到卡顿等性能问题或者死锁之类的问题,此时如果有调用堆栈将对解决问题很有帮助.那么在应用中如何来实时获取函数的调用堆栈呢?本文参考了网上的一些博文,讲述了使用 ...

  9. EF Core新增迁移时无法加载程序集“System.ValueTuple”的错误

    EF Core使用迁移命令时,如: Add-Migration Init 有时会出现如下错误: System.IO.FileLoadException: Could not load file or ...

  10. JDK动态代理深入理解分析并手写简易JDK动态代理(下)

    原文同步发表至个人博客[夜月归途] 原文链接:http://www.guitu18.com/se/java/2019-01-05/27.html 作者:夜月归途 出处:http://www.guitu ...