我所说的处理错误的方法,其实是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. Intellij IDEA 快捷键整理

    CSDN 2016博客之星评选结果公布      [系列直播]算法与游戏实战技术      "我的2016"主题征文活动 Intellij IDEA 快捷键整理(TonyCody) ...

  2. [LeetCode] Invert Binary Tree 翻转二叉树

    Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 Trivia: This problem wa ...

  3. [LeetCode] Reverse Words in a String II 翻转字符串中的单词之二

    Given an input string, reverse the string word by word. A word is defined as a sequence of non-space ...

  4. [LeetCode] Edit Distance 编辑距离

    Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2 ...

  5. JAVA的正则表达式-学习

    1.正则表达式作用 正则表达式,是用来匹配字符串的,即检查一定的格式,还能按格式进行分组,替换......其实,不用正则表达式,也可以编.但是,大多数情况下,正则表达式可以提高你编程的效率. 2.学习 ...

  6. IO流

    流的概念和作用 学习JavaIO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特 ...

  7. 【C#】析构函数

    MSDN paper 析构函数 析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数. 析构函数往往用来做“清理善后” 的工作( ...

  8. CentOS中Mysql常用操作

    安装mysqlyum -y install mysql-server 修改mysql配置vi /etc/my.cnf 这里会有很多需要注意的配置项,后面会有专门的笔记暂时修改一下编码(添加在密码下方) ...

  9. Hibernate+EhCache配置二级缓存

    步骤: 第一步:加入ehcache.jar 第二步: 在src目录下新建一个文件,名为:ehcache.xml 第三步:在hibernate配置文件的<session-factory>下配 ...

  10. PM成长之路(一)

    到底什么样的人适合任项目经理一直是很多企业的困惑,因为大家发现优秀项目经理的特质看起来和传统的职能经理或技术专家很不一样.当企业在决定开展一个重大的项目时,如果不能找到一个适合带领和管理项目的项目经理 ...