面向对象【day08】:异常处理(六)
本节内容
1、概述
2、异常梳理
3、异常梳理流程图
4、异常大全
5、自定义异常
一、概述
异常处理是当程序出错了,但是我们又不想让用户看到这个错误,而且我在写程序的时候已经预料到了它可以出现这样的错误,出现这样的错误代表着什么,我们可以提前处理这些个错误
二、异常处理
2.1 处理单个异常
语法如下:
|
1
2
3
4
|
try: code #处理的语句except Error1 as e: #遇到Error1执行下面的语句,在python2中写成except Error1,e print(e) |
代码如下:
|
1
2
3
4
5
6
7
8
|
name = [1,2,3]try: name[3] #不存在3这个下标值except IndexError as e: #抓取 IndexError 这个异常 print(e) #e是错误的详细信息#输出list index out of range |
2.2 处理多个异常
①写多个except,语法如下:
|
1
2
3
4
5
6
|
try: codeexcept Error1 as e: #处理Error1异常 print(e)except Error2 as e: #处理Error2异常 print(e) |
代码如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
|
name = [1,2,3]data = {"a":"b"}try: data["c"] #这边已经出现异常KeyError ,所以直接跳出code,跳到KeyError 下去处理 name[3]except IndexError as e: print(e)except KeyError as e: print(e)#输出'c' |
②写1个except,语法如下:
|
1
2
3
4
|
try: codeexcept (Error1,Error2,...) as e: print(e) |
代码如下:
|
1
2
3
4
5
6
7
8
|
try: data["c"] name[3]except (IndexError,KeyError) as e: print(e)#输出'c' |
注:第二种写法的用处:括号里面的所有错误,不管出现里面任何一种错误都用统一的处理方法。
2.3 Exception异常
语法如下:
|
1
2
3
4
5
6
|
try: codeexcept (Error1,Error2,...) as e: print(e)except Exception as e: #用Exception表示一下子抓住所有异常,这个一般情况下建议在异常最后面用,用在最后抓未知的异常 print(e) |
代码如下:
|
1
2
3
4
5
6
7
8
9
|
try: open("qigao.text","r",encoding="utf-8")except (IndexError,KeyError) as e: #没有IndexError,KeyError这两个异常 print(e)except Exception as e: #只能通过这个异常处理,Exception 抓住所有的异常 print(e)#输出[Errno 2] No such file or directory: 'qigao.text' |
2.4 else作用
作用:没有异常,则走else部分的逻辑代码
|
1
2
3
4
5
6
7
8
9
10
11
12
|
try: print("qigao,handson") #代码没有异常except (IndexError,KeyError) as e: print(e)except Exception as e: print(e)else: #没有异常出错,走else的逻辑代码 print("没有异常")#输出qigao,handson没有异常 |
2.4 finnally作用
作用:不管有没有错误,都会执行finnally中的代码
语法如下:
|
1
2
3
4
5
6
7
8
9
10
|
try: codeexcept (Error1,Error2,...) as e: print(e)except Exception as e: print(e)else: print("没有错误,执行")finnally: print("不管有没有错,都执行finnally") |
①没有异常情况
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
try: print("qigao,handson") #没有异常except (IndexError,KeyError) as e: print(e)except Exception as e: print(e)else: print("没有异常")finally: print("不管有没有错,都这行finnally")#输出qigao,handson没有异常不管有没有错,都这行finnally #没有报错,执行finnally |
②出现异常情况
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
try: data = {"a":"b"} data["c"] #data字典中没有'c'这个key值except (IndexError,KeyError) as e: print(e)except Exception as e: print(e)else: print("没有异常")finally: print("不管有没有错,都这行finnally")#输出'c'不管有没有错,都这行finnally #出错了也执行了finnally语句 |
三、异常处理流程图

四、异常大全
4.1 常用异常
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性xIOError 输入/输出异常;基本上是无法打开文件ImportError 无法引入模块或包;基本上是路径问题或名称错误IndentationError 语法错误(的子类) ;代码没有正确对齐IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]KeyError 试图访问字典里不存在的键KeyboardInterrupt Ctrl+C被按下NameError 使用一个还未被赋予对象的变量SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)TypeError 传入对象类型与要求的不符合UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它ValueError 传入一个调用者不期望的值,即使值的类型是正确的 |
4.2 更多异常
ArithmeticError
AssertionError
AttributeError
BaseException
BufferError
BytesWarning
DeprecationWarning
EnvironmentError
EOFError
Exception
FloatingPointError
FutureWarning
GeneratorExit
ImportError
ImportWarning
IndentationError
IndexError
IOError
KeyboardInterrupt
KeyError
LookupError
MemoryError
NameError
NotImplementedError
OSError
OverflowError
PendingDeprecationWarning
ReferenceError
RuntimeError
RuntimeWarning
StandardError
StopIteration
SyntaxError
SyntaxWarning
SystemError
SystemExit
TabError
TypeError
UnboundLocalError
UnicodeDecodeError
UnicodeEncodeError
UnicodeError
UnicodeTranslateError
UnicodeWarning
UserWarning
ValueError
Warning
ZeroDivisionError
4.3 ValueError
|
1
2
3
4
5
|
s1 = 'hello'try: int(s1)except ValueError, e: #python2.7的写法 print e |
五、自定义异常
5.1 自定义异常
|
1
2
3
4
5
6
7
|
class GaoError(Exception): #定义一个异常类,继承Exception def __init__(self,message): self.message = message def __str__(self): return self.message #给对象取一个名字 |
5.2 触发自定义异常
|
1
2
3
4
5
6
7
|
try: raise GaoError("数据库连接不上了") #触发自定义异常,GaoError("数据库连接不上了")这个对象except GaoError as e: print(e)#输出数据库连接不上了 |
自定义使用总结:
- 数据库连接不上的信息
- 权限问题,解析是没有权限了,给出异常提示
- 业务逻辑的错误
面向对象【day08】:异常处理(六)的更多相关文章
- python面向对象07/异常处理
python面向对象07/异常处理 目录 python面向对象07/异常处理 1. 异常错误分类 2. 什么是异常? 3. 异常处理 4. 为什么要有异常处理 5. 异常处理的两种方式 1.if判断 ...
- Python(六)面向对象、异常处理、反射、单例模式
本章内容: 创建类和对象 面向对象三大特性(封装.继承.多态) 类的成员(字段.方法.属性) 类成员的修饰符(公有.私有) 类的特殊成员 isinstance(obj, cls) & issu ...
- python基础——18(面向对象2+异常处理)
一.组合 自定义类的对象作为另一个类的属性. class Teacher: def __init__(self,name,age): self.name = name self.age = age t ...
- python学习笔记-(十一)面向对象进阶&异常处理
上篇我们已经了解了一些面向对象的基础知识,本次就了解下面向对象的一些进阶知识(虽然我也不知道有什么卵用). 静态方法 静态方法是一种普通函数,就位于类定义的命名空间中,它不会对任何实例类型进行操作.使 ...
- 面向对象的异常处理之深入理解java异常处理机制
什么是异常? 异常是对问题的描述,将问题的对象进行封装: 异常体系的特点:异常体系中的所有类以及建立的对象: 都具有可抛性,也就是说可以被throw和throws关键字所操作,只有异常体系具有该特点: ...
- Python-Day7 面向对象进阶/异常处理/Socket
一.面向对象高级语法部分 1.静态方法 通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里 ...
- day08(异常处理,创建异常,finally,throws和throw的区别)
异常处理, 异常的产生 运行时异常:程序运行中产生的异常:RuntimeException类. 编译时异常:程序在编译时产生的异常:除了RuntimeException类 其他都是编译时产生的 ...
- Python 中的面向对象和异常处理
在之前我们已经说过了 Python 中内置的主要的几种对象类型,(数,字符串,列表,元组和字典).而面向对象的核心人物还没出场呢 .那么我们常说的对象是什么类型的呢,其实他的类型就是“类”.继承封装和 ...
- python语言(七)面向对象、异常处理
一.异常处理 python解释器检测到错误,触发异常(也允许程序员自己触发异常).程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关).如果捕捉成功则进入另外一个处理分 ...
- Java 面向对象(十六)
多线程 一.并发与并行 并发:指两个或多个事件在同一个时间段内发生. 并行:指两个或多个事件在同一时刻发生(同时发生). 在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行, ...
随机推荐
- 我踩过的Alwayson的坑!
最近被sql server Alwayson高可用组和读写分离,弄得神魂颠倒,身心俱疲.遇到了下面一些问题,提醒自己也给后来人做些记录. EntityFramework支不支持Alwayson? 起因 ...
- CodeForces 589F-Gourmet and Banquet-二分答案
有m盘菜,每盘有一个开始时间和结束时间,必须每盘都吃同样的时间.问最多能吃多久. 二分答案,然后用一个优先队列维护当前时间内的菜,然后每次都吃结束时间最小的那盘. #include <cstdi ...
- .net mvc 基类属性覆盖问题
一,问题是这样的 我使用.net mvc设计架构时, 为了方便大家的获取UserInfo信息, 把UserInfo对象,放在了自定义的基类BaseController中, 二,问题出现了 我发觉多个人 ...
- python爬取豆瓣前25个影片内容的正则表达式练习
通过python正则表达式获取豆瓣top250的第一页的25个影片排名,影片名字,影片连接,导演,主演,上映日期,国家,剧情,评分,评价人数的内容 网页html内容: <ol class=&qu ...
- Hdoj 4508.湫湫系列故事——减肥记I 题解
Problem Description 对于吃货来说,过年最幸福的事就是吃了,没有之一! 但是对于女生来说,卡路里(热量)是天敌啊! 资深美女湫湫深谙"胖来如山倒,胖去如抽丝"的道 ...
- HDU-6370 Werewolf(杭电多校6I)
一群人在玩狼人杀,村民只会说真话,狼人会说真话和假话,要你求出那些人一定是村民或者那些人一定是狼人.想到了并查集不会用... 1,如果全部人都是狼人,一定可以所以一定是村民的人一定是0. 2, 加入是 ...
- HDU5985 Lucky Coins 概率dp
题意:给你N种硬币,每种硬币有Si个,有Pi 概率朝上,每次抛所有硬币抛起,所有反面的拿掉,问每种硬币成为最后的lucky硬币的概率. 题解:都知道是概率dp,但是模拟赛时思路非常模糊,很纠结,dp[ ...
- CodeForces - 589J(DFS)
题目链接:http://codeforces.com/problemset/problem/589/J 题目大意:一个机器人打扫一个密闭的房间,房间由一个矩形构成,'*'表示家具,'.'表示该位置为空 ...
- empty() 与 html("") 的区别
empty,首先循环给后代元素移除绑定.清除jquery给此dom的cache,然后循环removeFirstChild. 而html(''),则是简单暴力的设置innerHTML = ''; 查看文 ...
- UOJ#418. 【集训队作业2018】三角形
#418. [集训队作业2018]三角形 和三角形没有关系 只要知道儿子放置的顺序,就可以直接模拟了 记录历史最大值 用一个pair(a,b):之后加上a个,期间最大值为增加b个 合并? A1+A2= ...