python的异常处理try/except 万能处理exception
1、try方式
try:
age=int(input(">>>"))
int(age)#主逻辑 num=input(">>>>")
int(num)#主逻辑
except ValueError as e: #except代表捕捉的意思,as,把ValueError取个别名叫e
print(e)
#表示代码在执行过程中遇到异常之后直接跳到except C:\python35\python3.exe D:/pyproject/day31/错误与异常.py >>>23 >>>>dd invalid literal for int() with base 10: 'dd'
那如果出现了其他的类型的错误呢。我们上面这个只能捕捉到这一种错误类型
2、try多分支异常处理,类似于elif
try:
age=int(input(">>>"))
int(age)#主逻辑 num=input(">>>>")
int(num)#主逻辑
except KeyError as e: #except代表捕捉的意思,把ValueError取个别名叫e
print(e)
except ValueError as e:
print("--->",e) C:\python35\python3.exe D:/pyproject/day31/异常处理.py >>>aa ---> invalid literal for int() with base 10: 'aa'
2.1上面这是2种错误,那么如果再来一种错误呢
try:
age=int(input(">>>"))
int(age)#主逻辑 num=input(">>>>")
int(num)#主逻辑 l=[1,2,3]
l[666666]#取一个不存在的索引就会触发IndexError
except KeyError as e: #except代表捕捉的意思,把ValueError取个别名叫e
print(e)
except ValueError as e:
print("--->",e)
except IndexError as e:
print("索引错误",e) C:\python35\python3.exe D:/pyproject/day31/异常处理.py >>>1 >>>>2 索引错误 list index out of range
2.2如果try里面的代码运行有错误了,并不影响try外面的代码的继续运行的
try:
age=int(input(">>>"))
int(age)#主逻辑 num=input(">>>>")
int(num)#主逻辑 l=[1,2,3]
l[666666]#取一个不存在的索引就会触发IndexError
except KeyError as e: #except代表捕捉的意思,把ValueError取个别名叫e
print(e)
except ValueError as e:
print("--->",e)
except IndexError as e:
print("索引错误",e)
print("我是try外面的逻辑,我可以正常运行") C:\python35\python3.exe D:/pyproject/day31/异常处理.py >>>11 >>>>sdsf ---> invalid literal for int() with base 10: 'sdsf' 我是try外面的逻辑,我可以正常运行
3、那么还有好多的异常类型呢,总不能一个一个的都加上去吧,这时候就用到了万能异常
Exception
这样的话不管什么错误都可以捕捉的到了。
try:
age=int(input(">>>"))
int(age)#主逻辑 num=input(">>>>")
int(num)#主逻辑 l=[1,2,3]
l[666666]#取一个不存在的索引就会触发IndexError
except Exception as e: print("万能异常",e)
print("我是try外面的逻辑,我可以正常运行") C:\python35\python3.exe D:/pyproject/day31/异常处理.py >>>111 >>>>sdfdsf 万能异常 invalid literal for int() with base 10: 'sdfdsf' 我是try外面的逻辑,我可以正常运行
3.1 try else 当代码块中没有异常则触发else
try:
age=int(input(">>>"))
int(age)#主逻辑 num=input(">>>>")
int(num)#主逻辑 except Exception as e: #except代表捕捉的意思,把ValueError取个别名叫e
print("万能异常",e)
else:
print("没有异常就执行我")
print("我是try外面的逻辑,我可以正常运行") C:\python35\python3.exe "D:/pyproject/day31异常处理 socket介绍/异常处理.py" >>>11 >>>>22 没有异常就执行我 我是try外面的逻辑,我可以正常运行
3.2 finally 不管有没有异常都执行这段代码块
try:
age=int(input(">>>"))
int(age)#主逻辑 num=input(">>>>")
int(num)#主逻辑 except Exception as e: #except代表捕捉的意思,把ValueError取个别名叫e
print("万能异常",e)
finally:
print("无论是否异常都执行这段代码,通常是进行清理操作")
print("我是try外面的逻辑,我可以正常运行") C:\python35\python3.exe "D:/pyproject/day31异常处理 socket介绍/异常处理.py" >>>11 >>>>sddsdf 万能异常 invalid literal for int() with base 10: 'sddsdf' 无论是否异常都执行这段代码,通常是进行清理操作 我是try外面的逻辑,我可以正常运行
3.3我想达到这样的效果,如果用户输入的不对,就让他重新输入,知道正确为止
while True:
try:
age=int(input(">>>"))
int(age)#主逻辑
break
except Exception as e:
print("请重新输入",e)
print("我是try外面的逻辑,我可以正常运行") C:\python35\python3.exe D:/pyproject/day31/异常处理.py >>>222ss 请重新输入 invalid literal for int() with base 10: '222ss' >>>11 我是try外面的逻辑,我可以正常运行
万能异常的缺点就是,假如你有一万行代码,不管啥错误都报这个,那你就不知道是哪里错了。。。
python的异常处理try/except 万能处理exception的更多相关文章
- python基础-异常处理
一.错误和异常 程序中难免出现错误,而错误分成两种 1.1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 def te ...
- python之异常处理
异常处理是高级编程语言必备的一个功能模块. 一.异常基础 在编程过程中为了增加友好性.容错性和健壮性,在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户看见大 ...
- python笔记--异常处理
Python异常处理 常见异常 AttributeError:属性错误,特性引用和赋值失败时会引发属性错误 NameError:试图访问的变量名不存在 SyntaxError:语法错误,代码形式错误 ...
- python 27 异常处理
目录 异常处理 1. 错误分类 2. 异常 3. 异常处理 4. 异常处理的两种方法 5. try的结构 5.1 结构一:单分支结构 5.2 结构二:多分支结构 5.3 结构三:万能异常 5.4 结构 ...
- python的异常处理及异常类定义
python的异常处理语法和大多数语言相似: try: try块的语句... except exceptiontype1 as var:#使用as语句获得本次捕获到的异常的实例var except块语 ...
- Python进阶----异常处理
Python进阶----异常处理 一丶错误和异常 错误: 语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 ...
- Python 多进程异常处理
前言 最近项目用到了Python作为网站的前端,使用的框架是基于线程池的Cherrypy,但是前端依然有一些比较‘重’的模块.由于python的多线程无法很好的利用多核的性质,所以觉得把这些比较‘重’ ...
- python的异常处理机制
异常机制己经成为衡量一门编程语言是否成熟的标准之一,使用异常处理机制的 Python 程序有更好的容错性,更加健壮. 对于计算机程序而言,情况就更复杂了一一没有人能保证自己写的程序永远不会出辛苦!就算 ...
- Python之异常处理-Exception
在写python程序时, 不要害怕报错, 也不要怕自己的英语不够好, 不要看到一有红色的字就心里发怂. 其实报的错也是有套路可寻滴~识别了异常的种类, 才能对症下药. 常见异常: Exception ...
随机推荐
- M1/M2项目阶段总结
1.M1/M2总结 我们这学期完成了学霸项目. 在M1阶段,我们首先进行了分工,完成了一个系统的计划,然后是对学长代码的移植和优化.在优化代码的过程中,我们遇到了不少问题,比如一些代码的冗余以及指向性 ...
- 《Metasploit渗透测试魔鬼训练营》第一章读书笔记
第1章 魔鬼训练营--初识Metasploit 20135301 1.1 什么是渗透测试 1.1.1 渗透测试的起源与定义 如果大家对军事感兴趣,会知道各国军队每年都会组织一些军事演习来锻炼军队的攻防 ...
- 关于五子棋游戏java版
一 题目简介:关于五子棋游戏 二 源码的github链接 https://github.com/marry1234/test/blob/master/五子棋游戏 三.所设计的模块测试用例.测试结果 ...
- Github链接及git学习心得总结
众所周知GitHub已经是当下非常流行的代码托管库了,全世界有无数的程序员把他们的代码放在GitHub里.那比起云盘之类的工具,用GitHub有什么好处呢:1. 以后在帖子里只需要扔一个链接,大家就能 ...
- sho
手工编程:hello world 全部用命令行工具和Notepad编辑器,用手工创建并编译一个C的命令行程序:hello world. public class Hello{ publ ...
- [转帖]以Windows服务方式运行ASP.NET Core程序
以Windows服务方式运行ASP.NET Core程序 原作者blog: https://www.cnblogs.com/guogangj/p/9198031.htmlaspnet的blog 需要持 ...
- [日常工作]WorkStation 使用端口转发的方式使用宿主机IP地址提供服务
1. 虚拟机内的地址如果经常变化,或者是想使用宿主机进行网络服务 但是又不想有人能够访问具体的服务器提供机器.. 可以使用宿主机转发虚拟机的端口的方式来进行处理. workstation 比较好实现 ...
- python贡献度分析20/80定律
#-*- coding: utf-8 -*- #菜品盈利数据 帕累托图 from __future__ import print_function import pandas as pd #初始化参数 ...
- python数据统计量分析
#-*- coding: utf-8 -*- #餐饮销量数据统计量分析 from __future__ import print_function import pandas as pd cateri ...
- SpringBoot(十七)_springboot跨域处理
本文转自:Vi的技术博客 什么是跨域 首先,我们需要了解一下一个URL是怎么组成的: // 协议 + 域名(子域名 + 主域名) + 端口号 + 资源地址 http: + // + www.baidu ...