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的更多相关文章

  1. python基础-异常处理

    一.错误和异常 程序中难免出现错误,而错误分成两种 1.1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 def te ...

  2. python之异常处理

    异常处理是高级编程语言必备的一个功能模块. 一.异常基础 在编程过程中为了增加友好性.容错性和健壮性,在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户看见大 ...

  3. python笔记--异常处理

    Python异常处理 常见异常 AttributeError:属性错误,特性引用和赋值失败时会引发属性错误 NameError:试图访问的变量名不存在 SyntaxError:语法错误,代码形式错误 ...

  4. python 27 异常处理

    目录 异常处理 1. 错误分类 2. 异常 3. 异常处理 4. 异常处理的两种方法 5. try的结构 5.1 结构一:单分支结构 5.2 结构二:多分支结构 5.3 结构三:万能异常 5.4 结构 ...

  5. python的异常处理及异常类定义

    python的异常处理语法和大多数语言相似: try: try块的语句... except exceptiontype1 as var:#使用as语句获得本次捕获到的异常的实例var except块语 ...

  6. Python进阶----异常处理

    Python进阶----异常处理 一丶错误和异常   错误:       语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 ...

  7. Python 多进程异常处理

    前言 最近项目用到了Python作为网站的前端,使用的框架是基于线程池的Cherrypy,但是前端依然有一些比较‘重’的模块.由于python的多线程无法很好的利用多核的性质,所以觉得把这些比较‘重’ ...

  8. python的异常处理机制

    异常机制己经成为衡量一门编程语言是否成熟的标准之一,使用异常处理机制的 Python 程序有更好的容错性,更加健壮. 对于计算机程序而言,情况就更复杂了一一没有人能保证自己写的程序永远不会出辛苦!就算 ...

  9. Python之异常处理-Exception

    在写python程序时, 不要害怕报错, 也不要怕自己的英语不够好, 不要看到一有红色的字就心里发怂. 其实报的错也是有套路可寻滴~识别了异常的种类, 才能对症下药. 常见异常: Exception ...

随机推荐

  1. 【个人阅读】软件工程M1/M2阶段总结

    这次作业是好久以前布置的,由于学期末课程设计任务比较重,我在完善M2阶段的代码的同时又忙于数据库的实现和编译器的实现,一度感觉忙得透不过气来....到这些都基本完成的时候,会看自己以前的阅读心得,觉得 ...

  2. 《Linux内核分析》第七周学习笔记

    <Linux内核分析>第七周学习笔记 可执行程序的装载 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/co ...

  3. 《Linux内核分析》 第八节 进程的切换和一般的执行过程

    张嘉琪 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 Linux内核分析 第八 ...

  4. Leetcode——171.Excel表列序号【水题】

    @author: ZZQ @software: PyCharm @file: leetcode171_Excel表列序号.py @time: 2018/11/22 15:29 要求: 给定一个Exce ...

  5. Apache Shiro Session Management

    https://shiro.apache.org/session-management.html#session-management https://shiro.apache.org/session ...

  6. php中获取数据 php://input、$_POST与$GLOBALS['HTTP_RAW_POST_DATA']三者的区别

    $_POST 只有Coentent-Type的值为application/x-www.form-urlencoded和multipart/form-data两种类型时,$_POST才能获取到数据. $ ...

  7. [转载]oracle 高水位线详解

    一.oracle 高水位线详解 出处: https://www.cnblogs.com/linjiqin/archive/2012/01/15/2323030.html 一.什么是水线(High Wa ...

  8. MongoDb在windows10下的安装、创建用户和数据库

    1.mongodb下载地址https://www.mongodb.com/download-center#community 2.安装    3.在D:\MongoDB目录下创建db和log两个文件夹 ...

  9. hdu 4685(强连通分量+二分图)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4685 题意:n个王子和m个公主,王子只能和他喜欢的公主结婚,公主可以和所有的王子结婚,输出所有王子可能 ...

  10. 关于适用base64对图片进行编码在服务器上性能的相关讨论

    周五在写open api的时候 和