Python中两种处理错误方法的比较
我所说的处理错误的方法,其实是try:,except和raise这两种。
首先抛出一个实例,
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中两种处理错误方法的比较的更多相关文章
- python中两种拷贝目录方法的比较
首先是用python自己的api: shutil.copytree('./build/tested/doc', './build/tested/build/doc') 优点是改变平台时不需要修改代码, ...
- python中两种方法实现二分法查找,细致分析二分法查找算法
之前分析了好多排序算法,可难理解了呢!!(泣不成声)这次我要把二分查找总结一下,这个算法不算难度特别大,欢迎大家参考借鉴我不喜欢太官方的定义,太晦涩的语言,让人看了就头晕.我希望加入我自己的理解,能帮 ...
- UWP开发中两种网络图片缓存方法
通常情况下,我们的程序需要从服务器读取图片,但如果需要不止一次读取某一张图片的话,就需要做本地缓存了,这样既为用户省一点流量,又能显得你的APP很快. 假如你已经知道了某一张图片的地址,那么第一件事就 ...
- Cesium 中两种添加 model 方法的区别
概述 Cesium 中包含两种添加 model 的方法,分别为: 通过 viewer.entities.add() 函数添加 通过 viewer.scene.primitives.add() 函数添加 ...
- python中两种栈实现方式的性能对比
在计算机的世界中,同一个问题,使用不同的数据结构和算法实现,所使用的资源有很大差别 为了方便量化python中算法的资源消耗,对性能做测试非常有必要,这里针对stack做了python语言 下的性能分 ...
- Mat中两种像素遍历方法比较
小白,入门中,不足其指正.刚刚接触opencv,从一个Matlab风格的编程环境突然跳转到C++,实在有些不适.单就pixels scanning花了好长时间研究.opencv-tutorials给出 ...
- JAVA 中两种判断输入的是否是数字的方法__正则化_
JAVA 中两种判断输入的是否是数字的方法 package t0806; import java.io.*; import java.util.regex.*; public class zhengz ...
- Python中防止sql注入的方法详解
SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库.下面这篇文章主要给大家介绍了关于Python中 ...
- jsp中两种include的区别【转】
引用文章:http://www.ibm.com/developerworks/cn/java/j-jsp04293/ http://www.cnblogs.com/lazycoding/archive ...
随机推荐
- Maven学习
http://www.cnblogs.com/sprinng/p/5141233.html 生成项目jar包失败 maven安装出现解决:http://blog.csdn.net/kjfcpua/ar ...
- Linux 信号量详解一
信号量主要用于进程间(不是线程)的互斥,通过sem_p()函数加锁使用资源,sem_v函数解锁释放资源,在加锁期间,CPU从硬件级别关闭中断,防止pv操作被打断. semget函数 int semge ...
- [LeetCode] Lowest Common Ancestor of a Binary Tree 二叉树的最小共同父节点
Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. According ...
- 【原】Spark之机器学习(Python版)(二)——分类
写这个系列是因为最近公司在搞技术分享,学习Spark,我的任务是讲PySpark的应用,因为我主要用Python,结合Spark,就讲PySpark了.然而我在学习的过程中发现,PySpark很鸡肋( ...
- Url重写——伪静态实现
简述: 在我们浏览网站的时候,很多都是以.html结尾的.难道这些都是静态网页么?其实不是的,它们很多是伪静态 那么什么是伪静态?顾名思义,就是假的静态页面.通过某种设置让你看成是静态的. Q:为何要 ...
- 使用Xcode7的Instruments检测解决iOS内存泄露
文/笨笨的糯糯(简书作者)原文链接:http://www.jianshu.com/p/0837331875f0著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 作为一名iOS开发攻城狮, ...
- 个人作业-Week2
第一部分 调研, 评测 运行平台 win 8 软件版本:微软必应词典桌面版 3.5.2 BUG标题:必应背单词无法发音 BUG详细描述:如图,左边为必应词典该单词的搜索,可以发音,而右边必应背单词中 ...
- Linux可信计算机制模块详细分析之核心文件分析(8)tpm.c核心代码注释(中)
/*设置TPM命令格式*/ ssize_t tpm_getcap(struct device *dev, __be32 subcap_id, cap_t *cap, const char *desc) ...
- JS点击子元素不触发父元素点击事件(js阻止冒泡)
js阻止冒泡 <html> <title></title> <head> <meta charset="utf-8"> ...
- Windows常用快捷方式
总结了其他常用的快捷方式: Ctrl+C 复制 . Ctrl+V粘贴. Ctrl+X剪切. Delete删除. Alt+Tab 应用程序切换 Ctrl+Alt+Delete Ctrl+shift+E ...