day21 03 异常处理
day21 03 异常处理
1.什么是异常
异常:程序运行时发生错误的信号
错误:语法错误(一般是不能处理的异常)
逻辑错误(可处理的异常)
特点:程序一旦发生错误,就从错误的位置停下来,不再继续执行后面的内容
2.怎么处理异常呢?
比如下面类型代码的异常:
ret=int(input('number >>>'))
print(ret*'*')
如果执行后用户输入的不是数据就会报错:
number >>>a
Traceback (most recent call last):
File "<encoding error>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'a'
可以看到这个错误类型是:ValueError
处理的方法:
try:#异常处理语句
ret=int(input('number >>>'))#把认为有异常错误需要处理的内容放在try.....except 错误类型的机制里面
print(ret*'*')
except ValueError:#捕获错误的类型 异常处理语句,只能处理对应的错误
print('您输入的内容错误,请输入一个数字')
当再次输入错误的内容时,它不会标红报错,而是给你提示,就显得比较友好:
number >>>a
您输入的内容错误,请输入一个数字
使用try和except就能处理异常:
try是我们要处理的代码,从前面开始执行,如果有多个错误,遇到第一个错误时就停止了,后面的错误就不会处理了
except后面跟一个错误类型,当代码发生错误且错误类型符合的时候,就会执行except中的代码
except是支持多分支
有没有一个能处理所有错误的类型万能机制:Exception:
只告诉了在哪里错了,但是你不知道在哪里出错了,比较笼统
所以有了这个万能处理机制,仍需要把能预测到的问题单独处理
单独处理的所有内容都应该写在万能异常之前
try:
print('')
1/0
[][3]
int('a')
{}['key']
print('')
ret=int(input('number >>>'))
print(ret*'*')
except Exception:
print('你错了,老铁')
except ValueError:
print('您输入的内容错误,请输入一个数字')
#如果将这个分支放到万能异常的后面,如果有错误,就会先找到万能异常机制,就不会走下面分支了,
# 也就不会具体提醒了,即这个分支也就失效了
111
你错了,老铁
如果将分支机制放在万能机制的前面,当try里面真的有分支对应的错误类型的时候就会具体给出提示
else:没有异常执行else里面的代码
try:
ret=int(input('number >>>'))
print(ret*'*')
except ValueError:
print('您输入的内容错误,请输入一个数字')
except KeyError:
print('请输入正确的格式')
except Exception:
print('你错了,老铁')
else:
print('没有异常的时候执行else里面的代码')
假如输入一个正确的:
number >>>5
*****
没有异常的时候执行else里面的代码
finally:不管代码是否异常,都会执行
try:
ret=int(input('number >>>'))
print(ret*'*')
except ValueError:
print('您输入的内容错误,请输入一个数字')
except KeyError:
print('请输入正确的格式')
except Exception:
print('你错了,老铁')
else:
print('没有异常的时候执行try里面的代码')
finally:
print('====')
假如输入一个正确的:
number >>>10
**********
没有异常的时候执行try里面的代码
====
输入一个错误的:
number >>>a
您输入的内容错误,请输入一个数字
==== #输入的a不符合还是会执行
day21 03 异常处理的更多相关文章
- 《Head First Python》学习笔记03 异常处理
		
异常(运行时错误): 当代码逻辑遇到意外事件时,比如打开一个文件,却发现文件不存在.这时是增加额外的代码处理逻辑,还是捕获异常呢?答案是:Python优先推荐捕获异常,然后恢复. Python异常机制 ...
 - day21 模块   异常处理
		
常用模块:http://www.cnblogs.com/Eva-J/articles/7228075.html 今日概要: #time # —— 时间:时间戳 字符串 结构化时间 #collectio ...
 - day 21 03  补全异常处理
		
day 21 03 异常处理(补全) 1.异常处理的整体几个语句: try: .......#有可能出错的代码 ret=int(input('number >>>')) print ...
 - C++11异常处理 noexcept
		
1.简介 在C语言中,如果程序的运行出现异常.错误,我们想提供方案处理这些异常时,我们面临许多问题,如: (1)C语言没有提供统一(标准)的方式来处理错误: (2)无法保证错误会被正确的处理: (3) ...
 - Java异常处理:给程序罩一层保险
		
文/沉默王二 人这一生,总会遇到一些不可预料的麻烦,这些麻烦可能会让我们遭受沉重的打击.为了减轻因此承受的负担,我们就会买保险. 本着负责任的态度,我们程序员在写代码的时候,都非常的严谨.但程序在运行 ...
 - Oracle-14:PLSQL
		
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- PL/SQL PL/SQL(Procedural Language):过程化sql语言! 在原本的sql语句之 ...
 - day21:包和异常处理
		
1,复习 # 序列化模块 # json # dumps # loads # dump 和文件有关 # load load不能load多次 # pickle # 方法和json的一样 # dump和lo ...
 - day21双下方法,源码相关,异常处理
		
#!/usr/bin/env python# -*- coding:utf-8 -*- # 1.列举你了解的面向对象中的特殊成员,并为每个写代码示例.'''__init__初始化:class A: d ...
 - 一步一步搭框架(asp.netmvc+easyui+sqlserver)-03
		
一步一步搭框架(asp.netmvc+easyui+sqlserver)-03 我们期望简洁的后台代码,如下: using System; using System.Collections.Gener ...
 
随机推荐
- Go JSON嵌套解析失败
			
//结构体成员变量名首字母要大写,要小写需要用tag,请看范例. //如果没有tag,嵌套时就无法解析属性,解析失败就是空值. type messageRow struct { UserID stri ...
 - 《Windows核心编程系列》九谈谈同步设备IO与异步设备IO之同步设备IO
			
同步设备IO 所谓同步IO是指线程在发起IO请求后会被挂起,IO完成后继续执行. 异步IO是指:线程发起IO请求后并不会挂起而是继续执行.IO完毕后会得到设备的通知.而IO完成端口就是实现这种通知的很 ...
 - js和 php 介绍
			
转 1. 在公司项目的改造当中,经常会遇到js与php的函数互调的情况,而实际上JS与php的设计者是不提倡这两种语言直接进行调用的,一个是客户端语言,一个服务端语言,两者之间的交互往往靠的是ajax ...
 - APP热修复
			
APP热修复的概念: APP修复是针对修复app中的bug场景来定义的.当我们已上线的app出现bug的时候,我们想在用户不知情的情况下修复这个bug,那么就会用到热修复. APP热修复的实现原理: ...
 - Java实现三角形计数
			
题: 解: 这道题考的是穷举的算法. 一开始看到这道题的时候,本能的想到用递归实现.但使用递归的话数据少没问题,数据多了之后会抛栈溢出的异常.我查了一下,原因是使用递归创建了太多的变量, 每个变量创建 ...
 - js插件定义事件中,this引用的实现模拟
			
在web项目中,经常会使用jquery和mui等js框架,之前只是按照API说明去按规则使用,比如在jq和mui中,事件处理函数中可以直接用this访问事件源,如下面的代码: <!DOCTYPE ...
 - 微信小程序组件解读和分析:十五、switch 开关选择器
			
switch 开关选择器组件说明: switch,开关选择器.只能选择或者不选.这种属于表单控件或者查询条件控件. switch 开关选择器示例代码运行效果如下: 下面是WXML代码: [XML] 纯 ...
 - TCP/IP 协议、地址
			
(一)TCP/IP 协议是端与端之间通信的基础,计算机网络,分组报文,协议是将信息正确传递的组成. 计算机网络: 由多个客户端,中间路由组成的网络体系,每个节点都一个ip进行唯一识别.路由是作为一个转 ...
 - mysql中判断条件
			
if / case when 判断 SELECT CASE 1 WHEN 1 THEN "one" WHEN 2 THEN "two" ELSE "m ...
 - iOS-UI控件之UITableView(三)- 自定义不等高的cell
			
Storyboard_不等高 对比自定义等高cell,需要几个额外的步骤(iOS8开始才支持) 添加子控件和contentView之间的间距约束 设置tableViewCell的真实行高和估算行高 / ...