我所说的处理错误的方法,其实是try:,exceptraise这两种。

首先抛出一个实例,

dictt={'a':1,'b':2,'c':3}
try:
if dictt['d']>1: #字典中没有'd'
print("right!")
except KeyError:
print("there is no 'd'")

该程序的运行结果:

  there is no 'd'

而改为raise时,执行结果却是:

aaarticlea/png;base64,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" alt="" />

显然,由于‘f’是不存在的,所以if无法执行,导致raise也不能执行

两者(try:,except和raise)的区别:

前者,无论if中条件是什么,都可以运行,不报错;而后者,if中的条件要符合一定标准,不然raise运行不了。还有,raise会中断程序,显示红色的错误提示,而红色的提示正是raise中设定的。

总而言之,raise的使用一般具有实际意义。典型的用法:定义了一个接受多个参数的函数,而其中一个参数类型错误,此时用raise进行错误提示非常合适。

Example:

#实现两个整数的加法运算
def summ(add1,add2):
if (type(add1))==type(1) and (type(add2))==type(1):
return (add1+add2)
else:
raise TypeError("The two parameters should be integers")

Python中两种处理错误方法的比较的更多相关文章

  1. python中两种拷贝目录方法的比较

    首先是用python自己的api: shutil.copytree('./build/tested/doc', './build/tested/build/doc') 优点是改变平台时不需要修改代码, ...

  2. python中两种方法实现二分法查找,细致分析二分法查找算法

    之前分析了好多排序算法,可难理解了呢!!(泣不成声)这次我要把二分查找总结一下,这个算法不算难度特别大,欢迎大家参考借鉴我不喜欢太官方的定义,太晦涩的语言,让人看了就头晕.我希望加入我自己的理解,能帮 ...

  3. UWP开发中两种网络图片缓存方法

    通常情况下,我们的程序需要从服务器读取图片,但如果需要不止一次读取某一张图片的话,就需要做本地缓存了,这样既为用户省一点流量,又能显得你的APP很快. 假如你已经知道了某一张图片的地址,那么第一件事就 ...

  4. Cesium 中两种添加 model 方法的区别

    概述 Cesium 中包含两种添加 model 的方法,分别为: 通过 viewer.entities.add() 函数添加 通过 viewer.scene.primitives.add() 函数添加 ...

  5. python中两种栈实现方式的性能对比

    在计算机的世界中,同一个问题,使用不同的数据结构和算法实现,所使用的资源有很大差别 为了方便量化python中算法的资源消耗,对性能做测试非常有必要,这里针对stack做了python语言 下的性能分 ...

  6. Mat中两种像素遍历方法比较

    小白,入门中,不足其指正.刚刚接触opencv,从一个Matlab风格的编程环境突然跳转到C++,实在有些不适.单就pixels scanning花了好长时间研究.opencv-tutorials给出 ...

  7. JAVA 中两种判断输入的是否是数字的方法__正则化_

    JAVA 中两种判断输入的是否是数字的方法 package t0806; import java.io.*; import java.util.regex.*; public class zhengz ...

  8. Python中防止sql注入的方法详解

    SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库.下面这篇文章主要给大家介绍了关于Python中 ...

  9. jsp中两种include的区别【转】

    引用文章:http://www.ibm.com/developerworks/cn/java/j-jsp04293/ http://www.cnblogs.com/lazycoding/archive ...

随机推荐

  1. 【repost】document.write的用处

    document.write的用处 document.write是JavaScript中对document.open所开启的文档流(document stream操作的API方法,它能够直接在文档流中 ...

  2. MVC+EF6+Oracle,提示ORA-01918: user '***' does not exist

    1.在上下文里重载OnModelCreating:        //没用到这个方法         protected override void OnModelCreating(DbModelBu ...

  3. dubbo/dubbox 增加原生thrift及avro支持

    (facebook) thrift / (hadoop) avro / (google) probuf(grpc)是近几年来比较抢眼的高效序列化/rpc框架,dubbo框架虽然有thrift的支持,但 ...

  4. Nutch搜索引擎(第1期)_ Nutch简介及安装

    1.Nutch简介 Nutch是一个由Java实现的,开放源代码(open-source)的web搜索引擎.主要用于收集网页数据,然后对其进行分析,建立索引,以提供相应的接口来对其网页数据进行查询的一 ...

  5. 将HTML5封装成android应用APK文件的几种方法

    越来越多的开发者热衷于使用html5+JavaScript开发移动Web App.不过,HTML5 Web APP的出现能否在未来取代移动应用,就目前来说,还是个未知数.一方面,用户在使用习惯上,不喜 ...

  6. C++远征之封装篇(下)

    对象数组 类 x1[]; 栈中实例化,不用delete. 类 *X=new X[];//在堆中实例化,结尾需要用delete删除 delete []X; //这是数组的删除形式 X=NULL;

  7. 协程--gevent模块(单线程高并发)

    先恶补一下知识点,上节回顾 上下文切换:当CPU从执行一个线程切换到执行另外一个线程的时候,它需要先存储当前线程的本地的数据,程序指针等,然后载入另一个线程的本地数据,程序指针等,最后才开始执行.这种 ...

  8. Js数组

    参考:http://www.w3school.com.cn/jsref/jsref_obj_array.asp 一.数组定义 1.  var arr= [1,2,3]; 2.  var arr= ne ...

  9. 加快XCode的编译链接速度(200%+)—XCode编译速度慢的解决方案

    最近在开发一个大项目的时候遇到一个很头疼的问题,由于项目代码较多,每次都要编译链接1分钟左右,调试的时候很浪费时间,于是研究了一下如何提高编译链接的速度,在这里分享给大家. 提升编译链接的速度主要有以 ...

  10. javaScirpt事件详解-原生事件基础(一)

    事件 JavaScript与HTML之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间,通过监听特定事件的发生,你能响应相关的操作.图片引用:UI Events 事件流 ...