一、异常

异常是什么?

就是影响程序正常执行的事件,异常在程序执行的过程中发生,脚本发生异常时,我们需要捕获它,否则程序就会终止。

异常处理:

1、捕获异常:try:。。。except 。。。。。

 while True:
try:
num1=input('>>:')
num2 = input('>>:')
num1=int(num1) # 出错,不再往下执行try里面的代码块, 直接进入except
num2 = int(num2)
num=num1+num2
print(num)
except Exception as e:
print(e) #捕获错误信息 程序重新执行

2、复杂的异常处理结构:

try:

代码块1

except:

代码块2

else:

代码块3

finally:

代码块4

不出异常:1-3-4

出异常:1-2-4

3、异常种类

Exception可以捕获所有的异常

常用的其他异常

 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError 输入/输出异常;基本上是无法打开文件
ImportError 无法引入模块或包;基本上是路径问题或名称错误
IndentationError 语法错误(的子类) ;代码没有正确对齐
IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError 试图访问字典里不存在的键
KeyboardInterrupt Ctrl+C被按下
NameError 使用一个还未被赋予对象的变量
SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
TypeError 传入对象类型与要求的不符合
UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
导致你以为正在访问它
ValueError 传入一个调用者不期望的值,即使值的类型是正确的

对于特殊处理或提醒的异常需要先定义,最后定义Exception来确保程序正常运行

 s1 = 'hello'
try:
int(s1)
except IndexError as e:
print e
except KeyError as e:
print e
except ValueError as e:
print e
except Exception as e:
print e

主动触发异常

raise ..............   一般和自定义异常搭配使用

 while True:
try:
num1=input('>>:')
num2 = input('>>:')
num1=int(num1)
num2 = int(num2)
num=num1+num2
print(num)
raise Exception('eeeeeeeeeerrrrrrrrrrrrrrSSSSSSSS') #主动触发异常
except Exception as e:
print(e) # 打印出 eeeeeeeeeerrrrrrrrrrrrrrSSSSSSSS

断言:  assert 条件

 print(1)
assert 1==1
print(2)
'''输出:1
2
'''

二、反射

       以字符串的形式去访问对象中指定的属性,反射有四个方法:      

     hasattr(容器,'名称')    以字符串的形式判断某对象中是否含有指定的属性

    getattr(容器,'名称')    以字符串的形式去某个对象中获得指定的属性

    setattr(容器,'名称',值)      以字符串的形式去某个对象中设置指定的属性

    delattr(容器,'名称')     以字符串的形式去某个对象中删除指定的属性

1、允许用户输入 不同的url:
account/login
account/logout
home/index
home/order
2、看到不同的结果
3、输入不存在的url,曝404错误 url列表=[account/login,account/logout,home/index,home/order]
以上url的函数均保存在controller下的account脚本中
'''
inp=input('请输入url')
m,n=inp.split('/') #m=account n=login
去某个模块中找函数,如果函数存在就执行函数,如果不存在函数就报错
getattr() #专门用来去某个地方获取内部的东西 (以字符串的形式获取)
 from controller import account   #以上url的函数均保存在controller下的account脚本中

 h=hasattr(account,'login1') #去account模块(脚本)中,是否存在login函数
print(h) # 存在返回true 不存在返回false
getattr(account,'login')# 去account模块(脚本)中获取login函数 setattr(account,'login1','ddd') #去account模块(脚本)中添加login1函数
h=hasattr(account,'login1') #再次判断是否存在login1属性
print(h) #返回true delattr(account,'login1') #去account模块(脚本)中删除login1函数
h=hasattr(account,'login1') #再次判断是否存在login1属性
print(h) #返回false

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

  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 ...

  10. python 异常处理函数--raise

    Python 异常处理--raise函数用法 在Python中,要想引发异常,最简单的形式就是输入关键字raise,后跟要引发的异常的名称.异常名称标识出具体的类: Python异常处理是那些类的对象 ...

随机推荐

  1. 哈哈:sqlserver2008附加数据库时操作系统错误5(拒绝访问)错误5012的解决办法

    老师说:无论干什么,出错了,先大笑三声.如果人多了,在心里也要大笑三声.哈哈哈!!! 刚刚重装系统完后,然后想学习.自己去安装sqlserver2008数据库,完之后想附加之前的数据库.可是当我一点确 ...

  2. .Net Core WebAPI 基于Task的同步&异步编程快速入门

    .Net Core WebAPI 基于Task的同步&异步编程快速入门 Task.Result async & await 总结 并行任务(Task)以及基于Task的异步编程(asy ...

  3. AntiModerate – 渐进式图片加载的 JavaScript 库

    AntiModerate 是一个渐进式图片加载的 JavaScript 库.我们多数看到的图片显示模式,都是从上到下逐渐显示的,这是“标准式”图像:而有的图片是先出现一个很低分辨率的图像轮廓,类似加了 ...

  4. 自适应备忘录 demo

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  5. 【小贴士】【stringify神BUG】【localstorage失效】【消灭Safari alert框】【是否延迟加载】【页面10px白屏】

    前言 最近碰到几个恶心问题,也发现一点优化技巧,以及对Hybrid知识的一些整理,这里便一并拿出来做分享了,关于Hybrid的调试,会是我今后一个重点 我的博客首先是学习笔记,方便自己做知识沉淀,以后 ...

  6. JavaScript-数组去重由慢到快由繁到简

    indexOf去重 Array.prototype.unique1 = function() { var arr = []; for (var i = 0; i < this.length; i ...

  7. Android github 快速实现多人协作

    前言:最近要做github多人协作,也就是多人开发.搜索了一些资料,千篇一律,而且操作麻烦.今天就整理一下,github多人协作的简单实现方法. 下面的教程不会出现:公钥.组织.team.pull r ...

  8. 【Android】实现XML解析的几种技术

    本文介绍在Android平台中实现对XML的三种解析方式. XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能. 在 ...

  9. Play Framework 完整实现一个APP(六)

    需要为Blog添加 查看和发表评论的功能 1.创建查看功能 Application.java中添加 show() 方法 public static void show(Long id) { Post ...

  10. Magical平台类库代码分享

    这些天闲来无事,就整理了一些类库.jQuery插件和自定义控件.今天和大家分享下Magical平台类库代码. 下图为整个解决方案图.MagicalPlatForm里面定义的是众多的Layer层:Mag ...