异常处理:
  一、语法错误

  二、逻辑错误

为什么要进行异常处理?

  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. 委托事件(jQuery)

    <div class="content"> <ul> <li>1</li> <li>2</li> <l ...

  2. SQlite 日期时间总结

    1. 时间串转时间戳,函数strftime,其参数1是固定'%s',参数2是待转换的时间串,参数3...是修饰符 (1)select strftime('%s','2004-01-01 02:34:5 ...

  3. C++:类中创建线程

    #include <iostream> #include <stdio.h> #include <stdlib.h> #include <iostream&g ...

  4. API gateway 之 kong 基本操作 (三)

    一.演示环境准备 1.nginx配置 [root@nginx conf.d]# pwd /etc/nginx/conf.d [root@nginx conf.d]# ls conf_bak kong_ ...

  5. html2canvas 生成电子合同书

    首先给合同书父级加个ref 然后用html2canvas 插件 然后html2canvas 坑区来了,生成页面的时候,合同书是很长的.他有一部分是黑色的, 最开始从前辈们了解到是滚至顶部解决偏移.然后 ...

  6. 使用Typescript重构axios(二十四)——防御XSRF攻击

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  7. 如何用CSS实现中间自适应,两边定宽三栏布局

    1.前言 用css实现“两边定宽,中间自适应的三栏布局”这个问题应该是在前端面试中被面试官提问到的高频问题了,一般当面试者写出一种实现方法之后,面试官还会问你还有没有别的方法,尽量多的写出几种实现方法 ...

  8. Android常见内存泄露

    前言 对于内存泄漏,我想大家在开发中肯定都遇到过,只不过内存泄漏对我们来说并不是可见的,因为它是在堆中活动,而要想检测程序中是否有内存泄漏的产生,通常我们可以借助LeakCanary.MAT等工具来检 ...

  9. 因为 GitHub Actions 我发现了 Jake Wharton 的一个仓库

    本文微信公众号「AndroidTraveler」首发. 背景 昨天(2019-11-14)上去 GitHub 上面一看,结果来了个下面的提示: 点进去一看: 看来是自动化构建相关的. 那就试一下,选了 ...

  10. MySQL使用查看表SELECT语句

    来源:实验楼 本节实验中学习了 SELECT 语句的常用方法: 基本语法 数学符号条件 AND OR IN 通配符 排序 SQL 内置函数和计算 子查询与连接查询 输入命令,下载代码: git clo ...