异常处理:
  一、语法错误

  二、逻辑错误

为什么要进行异常处理?

  python解释器执行程序时,检测到一个错误,出发异常,异常没有被处理的话,程序就在当前异常处终止,后面的代码不会运行  

l = ['login','register']
for num,i in enumerate(l,1):
print(num,i) try: 处理异常用try
num = int(input('num >>>')) 中间时可能出现错误的代码
print(l[num - 1])
except (ValueError,IndexError) : 可能出现的两种错误
print('您输入的内容不合法')

万能异常处理:

try:
pass
except (ValueError,IndexError):
print('针对性的处理')
except Exception as e: 万能异常处理
print(e)   打印异常的错误类型
print('通用性的处理')
# by luffycity.com
# 什么是异常
# IndexError [][1]
# KeyError {}['key']
# pickle.load() EOFError
# FileNotFoundError open('aa')
# ModuleNotFoundError import aaaaaaaaaaa
# ValueError int('sdjkhf') # 语法错误 应该在写代码的时候就规避掉
# SyntaxError
# NameError name # 什么时候最容易出异常
# 当你要处理的内容不确定的时候
# 有用户参与
# 有外界数据接入 : 从文件中读 从网络上获取 # 当有多行报错的时候是为什么?
# def func1():
# name
#
# def func2():
# func1()
#
# def main():
# func2()
#
# main()
# 在嵌套调用的过程中,内部的代码出了问题,外部所有的调用的地方都成为报错追溯信息的一部分 # 怎么解决
# 从下往上找 首先找到你写的代码 出错的那一行
# 看看能不能看出问题
# 就把报错的最后一行 错误类型和详细提示贴到百度里,结合报错的那一行解决问题 # 单分支
# l = ['login','register']
# for num,i in enumerate(l,1):
# print(num,i)
#
# try:
# num = int(input('num >>>'))
# print(l[num - 1])
# except ValueError : # except处理的异常必须和实际报错的异常是相同的
# print('请输入一个数字')
# print(l[num - 1]) # 多分支
# l = ['login','register']
# for num,i in enumerate(l,1):
# print(num,i)
#
# try:
# num = int(input('num >>>'))
# print(l[num - 1])
# except ValueError :
# # 从上向下报错的代码只要找到一个和报错类型相符的分支就执行这个分支中的代码,然后直接退出分支
# print('请输入一个数字')
# except IndexError :
# # 如果找不到能处理和报错类型相同的分支,会一直往下走,最后还是没有找到就会报错
# print('只能输入1或2') # 多分支合并
# l = ['login','register']
# for num,i in enumerate(l,1):
# print(num,i)
#
# try:
# num = int(input('num >>>'))
# print(l[num - 1])
# except (ValueError,IndexError) :
# print('您输入的内容不合法') # 万能异常
# def buy():
# print('buy')
# name
#
# def back():
# print('back')
# [][1]
#
# def show():
# print('show')
# 1/0
#
# def main():
# l = [('购物',buy),('退货',back),('查看订单',show)]
# while True:
# for num,i in enumerate(l,1):
# print(num,i[0])
# num = int(input('num >>>'))
# print(l[num - 1])
# try:
# func = l[num - 1][1]
# func()
# except Exception:
# print('用户在选择了%s操作之后发生了不可知的异常' % l[num - 1][0])
#
# main() # as语法 能够将具体错误信息打印出来
# def buy():
# print('buy')
# name
#
# def back():
# print('back')
# [][1]
#
# def show():
# print('show')
# 1/0
#
# def main():
# l = [('购物',buy),('退货',back),('查看订单',show)]
# while True:
# for num,i in enumerate(l,1):
# print(num,i[0])
# num = int(input('num >>>'))
# print(l[num - 1])
# try:
# func = l[num - 1][1]
# func()
# except Exception as e:
# print(e)
# #print(e.args,e.__traceback__.tb_lineno,e.__traceback__.tb_frame)
# print('用户在选择了%s操作之后发生了不可知的异常' % l[num - 1][0])
#
# main() # 万能异常,相当于except Exception
# try:
# name
# [][1]
# int('aaa')
# except:
# print(123) # 多分支 + 万能异常 : 万能异常应该永远放在异常处理的最下面
# def buy():
# print('buy')
# name
#
# def back():
# print('back')
# [][1]
#
# def show():
# print('show')
# 1/0
#
# def main():
# l = [('购物',buy),('退货',back),('查看订单',show)]
# while True:
# for num,i in enumerate(l,1):
# print(num,i[0])
# try:
# num = int(input('num >>>'))
# print(l[num - 1])
# func = l[num - 1][1]
# func()
# except (ValueError,IndexError) :
# print('您输入的内容不合法')
# except Exception as e:
# print(e)
# #print(e.args,e.__traceback__.tb_lineno,e.__traceback__.tb_frame)
# print('用户在选择了%s操作之后发生了不可知的异常' % l[num - 1][0])
# main() try:
pass
except (ValueError,IndexError):
print('针对性的处理')
except Exception as e:
print(e)
print('通用性的处理')

异常其它处理:

except NameError:   # 网络不稳定,邮箱地址错误
print('name error')
except IndexError:
print('index error')
except Exception as e:
print('Exception')
else: # 当try中的代码不发生异常的时候 走else分支 如果发送成功了 进行一些处理
print('else')
finally: # 无论如何都会被执行  
print('finally')

finally 应用

try:
f = open('www','w')
f.read()
finally: # 即使遇到报错,程序结束,也会先执行finally中的代码,然后再结束程序
f.close()
print('文件已经关闭了')
# finally用来回收一些操作系统的资源 : 数据库连接 打开的文件句柄 网络连接
异常处理的几种情况
try ... except
try ... except ... else
try ... finally
try ... except ... finally
try ... except ... else ... finally

  

主动抛出异常:

  raise ValueError

主动异常
 # by luffycity.com
# else分支
# try:
# print('aaa') # 给某某某发邮件
# # name
# # [][1]
# # 1/0
except NameError: # 网络不稳定,邮箱地址错误
print('name error')
except IndexError:
print('index error')
except Exception as e:
print('Exception')
else: # 当try中的代码不发生异常的时候 走else分支 如果发送成功了 进行一些处理
print('else') # finally分支
# try:
# print('aaa') # 给某某某发邮件
# name
# # [][1]
# # 1/0
# except NameError: # 网络不稳定,邮箱地址错误
# print('name error')
# except IndexError:
# print('index error')
# except Exception as e:
# print('Exception')
# else: # 当try中的代码不发生异常的时候 走else分支 如果发送成功了 进行一些处理
# print('else')
finally: # 无论如何都会被执行
print('finally') # def func():
# f = open('file')
# try:
# while True:
# for line in f:
# if line.startswith('a'):
# return line
# except:
# print('异常处理')
# finally: # 即使return也会先执行fianlly中的代码
# f.close() try:
f = open('www','w')
f.read()
finally: # 即使遇到报错,程序结束,也会先执行finally中的代码,然后再结束程序
f.close()
print('文件已经关闭了') # finally用来回收一些操作系统的资源 : 数据库连接 打开的文件句柄 网络连接 异常处理的几种情况
try ... except
try ... except ... else
try ... finally
try ... except ... finally
try ... except ... else ... finally # 主动抛出异常 : 是给其他开发者用的
# raise ValueError
# raise ValueError('你写的不对')
# django是别人写的程序 框架 --> 程序员用 # 断言 - 语法
# assert 1==2 # 只能接受一个布尔值 False
# assert 1==1 # 只能接受一个布尔值 False
# print(123456)
# if 1 == int(input()):
# pass
# else:
# raise AssertionError # 自定义异常 :面向对象之后 # 异常处理的忠告,在最外层的异常处理应该在所有的开发结束之后才放
# main()
#sdhjlkghl # try:
# main()
# except Exception as e:
# 把e报错写到文件里

  

day20 异常处理的更多相关文章

  1. day34 异常处理、断言、socket之ftp协议

    Python之路,Day20 = 异常处理.断言.socket之ftp协议 参考博客:http://www.cnblogs.com/metianzing/articles/7148191.html 异 ...

  2. day20 python异常处理 try except

    day20 python   一.异常处理     1.什么是异常, 常见异常有:         逻辑错误 ''' name Traceback (most recent call last):   ...

  3. python 面向对象(五)约束 异常处理 MD5 日志处理

    ###############################总结###################### 1.异常处理 raise:抛出异常 try: 可能出现错误代码 execpt 异常类 a ...

  4. 巨蟒python全栈开发-第20天 核能来袭-约束 异常处理 MD5 日志处理

    一.今日主要内容 1.类的约束(对下面人的代码进行限制;项目经理的必备技能,要想走的长远) (1)写一个父类,父类中的某个方法要抛出一个异常 NotImplementedError(重点) (2)抽象 ...

  5. 关于.NET异常处理的思考

    年关将至,对于大部分程序员来说,马上就可以闲下来一段时间了,然而在这个闲暇的时间里,唯有争论哪门语言更好可以消磨时光,估计最近会有很多关于java与.net的博文出现,我表示要作为一个吃瓜群众,静静的 ...

  6. 基于spring注解AOP的异常处理

    一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...

  7. 异常处理汇总 ~ 修正果带着你的Net飞奔吧!

    经验库开源地址:https://github.com/dunitian/LoTDotNet 异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983 ...

  8. JavaScript var关键字、变量的状态、异常处理、命名规范等介绍

    本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...

  9. IL异常处理

    异常处理在程序中也算是比较重要的一部分了,IL异常处理在C#里面实现会用到一些新的方法 1.BeginExceptionBlock:异常块代码开始,相当于try,但是感觉又不太像 2.EndExcep ...

随机推荐

  1. 使用诊断工具观察 Microsoft.Extensions.DependencyInjection 2.x 版本的内存占用

    目录 准备工作 大量接口与实现类的生成 elasticsearch+kibana+apm asp.net core 应用 请求与快照 Kibana 上的请求记录 请求耗时的分析 请求内存的分析 第2次 ...

  2. phpstorm 2016.2.2 激活

    2016年7月14日 phpstorm 推送2016.2 更新 2016年10月25日phpstorm 推送2016.2.2 更新 2016年11月24日phpstorm 推送2016.3 更新 下面 ...

  3. mysql如何解除死锁状态

    第一种: 1.查询是否锁表 show OPEN TABLES where In_use > 0; 2.查询进程(如果您有SUPER权限,您可以看到所有线程.否则,您只能看到您自己的线程) sho ...

  4. TICK技术栈(三)InfluxDB安装及使用

    1.什么是InfluxDB? InfluxDB是一个用Go语言开发的时序数据库,用于处理高写入和查询负载,专门为带时间戳的数据编写,对DevOps监控,IoT监控和实时分析等应用场景非常有用.通过自定 ...

  5. 暑期集训20190729 字典序(dictionary)

    [题目描述] 你需要构造一个1~n的排列,使得它满足m个条件,每个条件形如(ai,bi),表示ai必须在bi前面. 在此基础上,你需要让1尽可能靠前,然后你需要让2尽可能靠前,然后是3,4,5,…,n ...

  6. 【 格式化时间(SimpleDateFormat)用法】

    将特定字符串转换成Date格式 可以通过 new 一个 SimpleDateFormat 对象,通过对象调用parse方法实现 示例代码: String time = "2019-11-09 ...

  7. 基于node的前端组件包发布至nexus和npmjs

    目录 目录... 3 1. 前言... 1 2. 配置... 1 2.1. 建立组件的导出模块... 1 2.2. 建立组件入口文件... 1 2.3. 配置“ng-package.json”文件.. ...

  8. gedit一些小的新发现

    写应该还有一些人正在像我一样用gedit呢. 现在vim,gedit,guide三党还是互相瞧不起呢. 我写这一篇是想稍微交流一下gedit的一些乱七八糟的玩意,非gedit党勿喷. 有些人连一些比较 ...

  9. NOIP模拟18 T2

    不知道为什么很多人拒绝这题打搜索...其实搜索在充分剪枝后时间是非常优秀的,不管数据怎样基本都可跑出 首先一个显然结论:对于某种状态,他抓到的小精灵一定是一个连续的区间. 因此我们可以枚举这个区间的左 ...

  10. 7.25 NOIP模拟8

    这次考试前面状态还行,后两个小时真是一言难尽,打了个T3的n^2暴力就懵逼了,不知道怎么优化. T1.匹配 看了一边题发现不太懂(这不是考试的难度啊),然后水完T2后回来5分钟水过,非常愉快的一道题. ...