Python中异常处理
高级语言通常都配置了一套try...except...finally的错误处理机制。
1、我们先看一个try的机制
try:
res=1/0
except ZeroDivisionError as e:
print("出错了,除数不能为0",e)
运行结果为:
出错了,除数不能为0 division by zero
当我们认为某些代码可能会出错时,就可以用try来运行这段代码,如果只选出错,则后续代码不会执行
而是直接跳转至错误处理代码,即except语句块 2、另外一个例子:
l=[]
dic={}
try:
print(dic['name'])
print(l[-1])
except KeyError as e:
print('字典key不存在',e)
except IndexError as e:
print("出错了,下标越界",e)
except Exception as e:#捕捉所有的异常
print("未知异常",e)
else:
print("没有出现异常...")
finally:#不管出现 异常和不出现异常,都会执行
print("什么时候执行finally")
输出结果:
字典key不存在 'name'
什么时候执行finally
key不存在,我们就抛出一个keyerror的错误,下标越界,我们就抛出一个indexerror的错误
如果没有错误,就在except语句块后面加一个else,当没有错误发生时,就自动执行else
finally是不管什么时候都执行的语句
3、记录错误
如果不捕获错误,自然可以让python解释器来打印出错误堆栈,但是程序也被结束了,既然我们能捕获错误,就
可以把错误打印出来,然后分析错误,同时让程序执行下去
Python内置的loging模块可以记录错误
import logging
def foo(s):
return 10 / int(s)
def bar(s):
return foo(s) * 2
def main():
try:
bar('0')
except Exception as e:
logging.exception(e)
main()
print('END')
输出结果
END
ERROR:root:division by zero
Traceback (most recent call last):
File "C:/Users/zyq64/PycharmProjects/1018/day10/记录错误.py", line 12, in main
bar('0')
File "C:/Users/zyq64/PycharmProjects/1018/day10/记录错误.py", line 8, in bar
return foo(s) * 2
File "C:/Users/zyq64/PycharmProjects/1018/day10/记录错误.py", line 5, in foo
return 10 / int(s)
ZeroDivisionError: division by zero
同样是出错,但是程序打印完错误信息后会继续执行,并正常退出
4、主动抛出错误 raise
try:
10 / 0
except ZeroDivisionError:
raise ValueError('input error!')
输出结果:
Traceback (most recent call last):
File "C:/Users/zyq64/PycharmProjects/1018/day10/异常处理.py", line 38, in <module>
10 / 0
ZeroDivisionError: division by zero
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:/Users/zyq64/PycharmProjects/1018/day10/异常处理.py", line 40, in <module>
raise ValueError('input error!')
ValueError: input error!
Python中异常处理的更多相关文章
- python中异常处理之esle,except,else
异常是指程序中的例外,违例情况.异常机制是指程序出现错误后,程序的处理方法.当出现错误后,程序的执行流程发生改变,程序的控制权转移到异常处理. python中使用try...except语句捕获异常, ...
- python中异常处理--raise的使用
https://www.cnblogs.com/zhangyin6985/p/7229553.html 当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常.一旦执行了rai ...
- Python基础---python中的异常处理
Python中的异常处理 一.什么是异常处理 python解释器检测到错误,触发异常(也允许程序员自己触发异常) 程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关) ...
- Python 中的面向对象和异常处理
在之前我们已经说过了 Python 中内置的主要的几种对象类型,(数,字符串,列表,元组和字典).而面向对象的核心人物还没出场呢 .那么我们常说的对象是什么类型的呢,其实他的类型就是“类”.继承封装和 ...
- Python中的异常处理 -- (转)
python中的异常 异常是指程序中的例外,违例情况.异常机制是指程序出现错误后,程序的处理方法.当出现错误后,程序的执行流程发生改变,程序的控制权转移到异常处理. Exception类是常用的异 ...
- python中的异常处理机制
python中的异常处理 1.什么是异常 异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异 ...
- Python中常见的异常处理
异常和错误 part1:程序中难免出现错误,而错误分成两种 1. 语法错误(这种错误,根本过不了Python解释器的语法检测,必须在程序执行前就改正) # 语法错误示范一 if # 语法错误示范二 d ...
- python基础20 -------python中的异常处理
一.python程序中的会出现的错误. 1.语法错误:这种错误根本过不了python解释器的语法检测阶段,必须在程序执行之前进行改正. 2.逻辑错误:这种错误虽然过了语法检测阶段但是程序在执行的过程中 ...
- 第五章 python中的异常处理
每种编程语言都会有自己的异常处理机制,虽然各有特色,但基本上都差不多,那么python中强大异常处理机制是什么样的呢? 一.异常: python用异常对象来表示异常情况,遇到错误后,会引发异常.如果异 ...
随机推荐
- function的toString方法
javascript的创建多行字符串的除了平时常见的”“+ 反斜杠\ 还有ES6的` ` 在js51上发现一个很有意思的方法 function heredoc(fn) { return fn.toSt ...
- idea 编译报错 未结束的字符串字面值,非法的类型开始
1.修改编码 全局编码设置: File -> Other Settings -> Default Settings->file encoding 工程编码设置: File -> ...
- Mysql 书写语句时避免出现关键字导致报错 关键字大全
ADD ALL ALTER ANALYZE AND AS ASC ASENSITIVE BEFORE BETWEEN BIGINT BINARY BLOB BOTH BY CALL CASCADE C ...
- Eclipse中Tomcat v8.0 Server at localhost右键选择Properties详情页中Server Locations变灰无法编辑
Eclipse中Tomcat v8.0 Server at localhost右键选择Properties详情页中Server Locations变灰无法编辑解决办法:1.首先将Servers中部署的 ...
- 51Nod 1058 N的阶乘的长度
输入N求N的阶乘的10进制表示的长度.例如6! = 720,长度为3. Input 输入N(1 <= N <= 10^6) Output 输出N的阶乘的长度 Input示例 6 Out ...
- 【题解】Luogu P3931 SAC E#1 - 一道难题 Tree
原题传送门 题目几乎告诉你要用最大流 先进行搜索,将树的叶子节点都连到一个虚拟点T上,流量为inf(这样不会干扰到前面部分的最大流) 其他边按树的形态连边,以根节点为S,跑一变最大流即可求出答案 #i ...
- Maven+SSM框架(Spring+SpringMVC+MyBatis)(二)
1.基本概念 2.开发环境搭建 3.Maven Web项目创建 4.SSM整合 此次整合我分两个配置文件: 1)分别是spring-mybatis.xml,包含spring和mybatis的配置文件, ...
- react-router 4.0(四)跳转404
import React from 'react' import ReactDOM from 'react-dom' import { HashRouter, Route, Link, Prompt, ...
- 使用 R 语言挖掘 QQ 群聊天记录
1.获取数据 从 QQ 消息管理器中导出消息记录,保存的文本类型选择 txt 文件.这里获取的是某群从 2016-04-18 到 2016-05-07 期间的聊天记录,记录样本如下所示. 消息记录(此 ...
- layui框架
layui框架 Fly社区/分享一个layui风格的grid.greegrid