python-异常处理

时间:2021-09-09 13:11:14

一、异常

异常是什么?

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

异常处理:

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. Hibernate 系列 03 - 使用Hibernate完成持久化操作

    引导目录: Hibernate 系列教程 目录 康姆昂,北鼻,来此狗.动次打次,Hibernate继续走起. 目录: 使用Hibernate实现按主键查询 使用Hibernate实现数据库的增.删.改 ...

  2. C#实现Excel模板导出和从Excel导入数据

    午休时间写了一个Demo关于Excel导入导出的简单练习 1.窗体 2.引用office命名空间 添加引用-程序集-扩展-Microsoft.Office.Interop.Excel 3.封装的Exc ...

  3. window2008 64位系统没有office组件问题分析及解决

    服务器是windows server2008 64位系统, 我的系统需要用到Microsoft.Office.Interop.Excel组件 在上传Excel单据遇到错误:检索 COM 类工厂中 CL ...

  4. 本地拦截genymotion或者Android模拟器的网络请求

    我们在主机上面运行了Burp或者fiddler,那么代理已经监听在本机的8080端口了. 那么我们需要在模拟器中进行如下设置: 1.在设置中,长按当前连接的wifi网络,弹出如下: 2. 点击修改网络 ...

  5. surface pro系统按键+重装系统

    一. 如果无法进入系统: surface pro1代,可以插入U盘启动盘,然后按音量键上键,然后按电源键,然后释放电源键,然后等屏幕上"Surface"出来后,释放音量键. 2代以 ...

  6. 配置 nginx location 实时查看 php-fpm 的状态

    在Nginx.conf 里配置 location ~ ^/status$ { include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_ ...

  7. C语言函函数嵌套

    一.实验作业 1.1 PTA题目 设计思路 1.定义整形变量i,if(b==n-1)用于递归的终止,并返回1. 2.for i=b to n ,if(a[i]<a[min]);进行升序排序 3. ...

  8. Eclipse常用设置及快捷键

    1. Eclipse常用设置 1.1 代码自动提示 选择菜单:Window -> Preferences -> Java -> Editor -> Content Assist ...

  9. centOS7docker安装oracle

    1.拉取oracle 11g 的镜像: 用root登陆服务器,输入下面的命令,拉取oracle 11g的镜像,有点大,6.8G多: docker pull registry.cn-hangzhou.a ...

  10. python 十大web框架排名总结

    0 引言 python在web开发方面有着广泛的应用.鉴于各种各样的框架,对于开发者来说如何选择将成为一个问题.为此,我特此对比较常见的几种框架从性能.使用感受以及应用情况进行一个粗略的分析. 1 D ...