Python--异常处理和断言
try关键字,定义获取程序错误
except关键字,出现异常错误执行里面的代码
Exception定义错误类,Exception能获取到所有类型的错误错误,as创建错误对象名称,自动获取错误信息
#!/usr/bin/env python
# -*- coding:utf8 -*-
"""获取程序错误信息"""
try: #try关键字定义获取程序错误
#代码块
a = str(字符串)
print(a)
except Exception as e: #except关键字出现异常错误执行里面的代码,Exception定义错误类,as创建错误对象自动获取错误信息
print(e) #打印错误对象输出错误信息
# 输出
# name '字符串' is not defined
python中的异常种类非常多,每个异常专门用于处理获取某一项异常
常见错误类型
AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError 输入/输出异常;基本上是无法打开文件
ImportError 无法引入模块或包;基本上是路径问题或名称错误
IndentationError 语法错误(的子类) ;代码没有正确对齐
IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError 试图访问字典里不存在的键
KeyboardInterrupt Ctrl+C被按下
NameError 使用一个还未被赋予对象的变量
SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
TypeError 传入对象类型与要求的不符合
UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
导致你以为正在访问它
ValueError 传入一个调用者不期望的值,即使值的类型是正确的
我们在以后记录错误时,要想记录对应的错误信息可以用以下办法
先用对应的错误类型来获取,如果都不是前面对应的错误类型,最后用Exception来获取
#!/usr/bin/env python
# -*- coding:utf8 -*-
"""获取程序错误信息"""
try:
a = str(字符串)
print(a)
except AttributeError as c: #出现对应错误就获取到信息,打印出来,如果不是对应错误则不执行
print(c)
except IOError as d: #出现对应错误就获取到信息,打印出来,如果不是对应错误则不执行
print(d)
except ImportError as e: #出现对应错误就获取到信息,打印出来,如果不是对应错误则不执行
print(e)
except Exception as f: #都不是上面对应的错误,用Exception来不管是上面错误都获取到
print(f)
# 输出
# name '字符串' is not defined
else主代码块执行完,执行该块
finally无论异常与否,最终执行该块
#!/usr/bin/env python
# -*- coding:utf8 -*-
try:
#主代码块
a = str(hjhb)
except Exception as e:
#代码错误执行模块
print(e)
else:
print("主代码块执行完,执行该块")
finally:
print("无论异常与否,最终执行该块")
主动触发异常,也就是没有错误,主动触发一个错误
raise关键字,主动触发一个错误
#!/usr/bin/env python
# -*- coding:utf8 -*-
try:
#主代码块
a = str("")
raise Exception('错误了。。。')
except Exception as e:
#代码错误执行模块
print(e)
# 输出
# 错误了。。。
Python--异常处理和断言的更多相关文章
- python异常处理与断言以及日志模块
python异常处理与断言 目录: 1.异常处理 2.断言(assert) 3.日志模块(logging) 4.修改之前的车票信息查询,把日志模块.异常处理加进去 1.异常处理 代码如下: 语法: t ...
- python异常处理和断言
http://blog.csdn.net/pipisorry/article/details/21841883 关于异常处理有必要么的讨论 最重要的问题是你在开发过程中隐藏了bug,如果当时你没加这个 ...
- (69)Python异常处理与断言
http://blog.csdn.net/pipisorry/article/details/21841883 断言 断言是一句必须等价于布尔真的判定;此外,发生异常也意味着表达式为假.这些工作类似于 ...
- python异常处理、断言
异常处理基本语法 捕获异常 try: 语句1 语句2 ... except ERRNAME as e: print(e) #尝试执行语句,捕获到ERRNAME异常时打印异常信息e 捕获多个异常 try ...
- 14、python异常处理及断言
前言:本文主要介绍python中异常的处理及断言,包括异常类型.异常捕获.主动跑出异常和断言. 一.异常类型介绍 什么是异常?异常即是一个事件,该事件会在程序执行过程中发生,会影响程序的正常执行,一般 ...
- [Python学习笔记][第八章Python异常处理结构与程序调试]
1/30 第八章Python异常处理结构与程序调试 异常处理 try-except结构 try: try块 except Exception: except块 try-except-else结构 tr ...
- python异常处理try,except,else,finally,raise
先看下else的使用: try: ... exception: ... else: ... 只有在try中没有发生任何异常,所有代码完全成功的情况下才会转入else 再看下finally: final ...
- Python 异常处理
Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Python教程会具体介绍. 断言 ...
- Python异常处理总结
一.何谓异常处理 在我们调试程序时,经常不可避免地出现意料之外的情况,导致程序不得不停止运行,然后提示大堆提示信息,大多是这种情况都是由异常引起的.异常的出现一方面是因为写代码时粗心导致的语法错误,这 ...
- Python异常处理回顾与总结
1 引言 在我们调试程序时,经常不可避免地出现意料之外的情况,导致程序不得不停止运行,然后提示大堆提示信息,大多是这种情况都是由异常引起的.异常的出现一方面是因为写代码时粗心导致的语法错误,这种错误在 ...
随机推荐
- 机器学习---笔记----numpy和math包中的常用函数
本文只是简单罗列一下再机器学习过程中遇到的常用的数学函数. 1. math.fabs(x): 返回x的绝对值.同numpy. >>> import numpy >>> ...
- windows 文件/文件夹操作
move命令 命令作用:移动某个文件到指定的文件夹下 将D:\file\abc.zip 移动到 E:\test\文件夹下 move d:\file\abc.zip e:\test\ 移动之后再原来的文 ...
- js 图片延时加载
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...
- js 中class选择器,addClass,removeClass,hasClass,toggleClass,getByClass
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...
- 输出链表的倒数第K个值
题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路一:链表不能向前遍历,只能向后遍历.因此倒数第K个结点就是 正序的 :len(链表)-1-K的下一个. 注意,此处的思路与代码中具体实 ...
- jsp自定义标签开发
参考:http://blog.csdn.net/lw001x/article/details/7589302
- [BZOJ1588]营业额统计
Problem 每次给你一个数,找出前面的数与这个数的差的绝对值的最小值 Solution Splay Notice 找不到前驱和后继时,会出错. Code #include<cmath> ...
- Win10访问不到XP共享的解决:
不知道别人的是怎么解决. 反正我这么解决了. 我的win10笔记本,是使用windows帐户登陆的.可以同步很多东西. 同事的电脑是台式老古董XP. 扫描不到网上邻居,手动\\ip也访问不到. 最后安 ...
- 【Ctrl】 + 【Alt】 + 【F1~F6】 和 【Ctrl】 + 【Alt】 + 【T】打开的终端有什么不同?
ctrl +alt +Fn 打开的是模拟终端,简单说来,Linux系统一开机会自动打开6个模拟终端,然后自动切换到其中一个(一般来说是切换到图形界面的那个也就是说窗口管理器是在这6个模拟终端中运行的) ...
- 运算类实现 及 GNU Makefile基本结构
1.运算类的实现,代码如下: (1)operator.cpp #include<iostream> #include "operator.h" using names ...