Python3 异常与断言

1.异常

当出现错误时,程序就会发生异常

num1=input(‘Please input a num1: ‘)
num2=input(‘Please input a num2: ‘)

print(float(num1)/float(num2))

输入num1=3,num2=0,程序产生异常

除了除零异常,还有许多种异常:

ImportError:无法引入包或模块
IndexError:下标索引超界
NameError:使用还未赋值的变量
SyntaxError:代码逻辑出错,不能执行
TypeError:传入的对象类型与要求不符
ValueError:传入一个不被期望的值,即使类型正确
KeyError:试图访问字典里不存在的键
IOError:输入输出异常
ZeroDivisionError:除零
AttributeError:尝试访问未知的对象属性

(1)异常捕获

使用try…except…语句来捕获异常

num1=input(‘Please input a num1: ‘)
num2=input(‘Please input a num2: ‘)
try:
	print(float(num1)/float(num2))
except:
	print(‘Error!‘)

输出结果:

也可以在except后面加上具体的异常

num1=input(‘Please input a num1: ‘)
num2=input(‘Please input a num2: ‘)
try:
	print(float(num1)/float(num2))
except ZeroDivisionError:
	print(‘Error!‘)

(2)处理多个异常

上面的例子不止会出现除零异常,如果我输入的不是数字而是字母,也会产生异常

num1=input(‘Please input a num1: ‘)
num2=input(‘Please input a num2: ‘)
try:
	print(float(num1)/float(num2))
except ZeroDivisionError:
	print(‘Error!‘)
except ValueError:
	print(‘Input a num!‘)

输出结果:

也可以只写一个except语句

num1=input(‘Please input a num1: ‘)
num2=input(‘Please input a num2: ‘)
try:
	print(float(num1)/float(num2))
except (ZeroDivisionError,ValueError):    #一定要用()包起来
	print(‘Error!‘)

(3)else语句

num1=input(‘Please input a num1: ‘)
num2=input(‘Please input a num2: ‘)
try:
	print(float(num1)/float(num2))
except (ZeroDivisionError,ValueError):
	print(‘Error!‘)
else:
	print(‘Input right!‘)

如果产生异常就不会执行else语句

(4)finally语句

num1=input(‘Please input a num1: ‘)
num2=input(‘Please input a num2: ‘)
try:
	print(float(num1)/float(num2))
except (ZeroDivisionError,ValueError):
	print(‘Error!‘)
else:
	print(‘Input right!‘)
finally:
	print(‘Over!‘)

不管会不会产生异常,都会执行finally语句.所以finally语句多用来收尾.

(5)输出异常信息

如果想要输出异常信息,并且使用默认的异常提示

num1=input(‘Please input a num1: ‘)
num2=input(‘Please input a num2: ‘)
try:
	print(float(num1)/float(num2))
except Exception as e:
	print(e)
	print(‘Error!‘)
else:
	print(‘Input right!‘)
finally:
	print(‘Over!‘)

输出结果:

(6)抛出异常

raise需要指定一个参数,必须是一个异常的实例或者是异常的类

a=1
raise ValueError(‘Error!‘)

输出结果:

在except里面,raise可以不用传入参数,这样会将异常再次抛出

num1=input(‘Please input a num1: ‘)
num2=input(‘Please input a num2: ‘)
try:
	print(float(num1)/float(num2))
except Exception as e:
	print(e)
	raise

输出结果:

2.断言

assert后面接的第一个参数应该是一个布尔表达式,如果表达式的值为True,不会中断程序,如果表达式的值为False,就会中断程序

assert后面接的第二个参数是产生中断之后要输出的内容

num1=input(‘Please input a num1: ‘)
num2=input(‘Please input a num2: ‘)

assert (float(num2)!=0),‘Error!‘
print(float(num1)/float(num2))

输出结果:

原文地址:https://www.cnblogs.com/zmqqq/p/10493645.html

时间: 2024-10-28 10:16:23

Python3 异常与断言的相关文章

11 异常, 日志, 断言和调试

处理异常 java程序设计中, 异常对象都是派生于Throwable类的一个实例, 如果java中内置的异常类不能够满足要求, 用户可以自己创建自己的异常类. Error 类层次结构描述了java运行时系统的内部错误和资源耗尽错误. 应用程序不应该抛出这种类型的对象, 如果出现了内部错误, 除了通知用户, 并尽力使程序安全地终止之外, 也没无能为力了, 这种情况很少出现. 需要主要关注的是 Exception层次结构, 这个层次结构分为两个分支: 有程序错误导致的异常属于 RuntimeExce

两张图解读Java异常与断言

两张图解读Java异常与断言                                 --转载请注明出处:coder-pig 本节引言: 前天发布的"七张图解析Java多线程"大家的反响不错,嗯呢,今天再来两张吧, 关于Java异常与断言的,涉及到的东西有: ①什么是异常,为什么会出现异常,异常处理机制模型,常见异常信息总结,检验异常与非检验异常; 异常的捕获:try-catch块,finally块,多重catch块,try-catch块的嵌套; 异常的声明:throws回避异

Python3 异常检测

1.标准异常 AssertionError 断言语句(assert)失败 AttributeError 尝试访问未知的对象属性 EOFError 用户输入文件末尾标志EOF(Ctrl+d) FloatingPointError 浮点计算错误 GeneratorExit generator.close()方法被调用的时候 ImportError 导入模块失败的时候 IndexError 索引超出序列的范围 KeyError 字典中查找一个不存在的关键字 KeyboardInterrupt 用户输入

Java核心技术卷一 5. java异常、断言和日志

处理错误 由于出现错误而使得某些操作没有完成,程序因该: 返回到一种安全状态,并能够让用户执行一些其他命令 允许用户保存所有操作的结果,并以适当的方式终止程序 需要关注的问题: 用户输入错误 设备错误 物理限制 代码错误 当某个方法不能够采用正常的路径完成它的任务,就可以通过另外一个一个路径退出方法.这种情况下,方法并不返回任何值,而是抛出(throw)一个封装了错误信息的对象.要注意这个方法将会立刻退出,并不返回任何值.调用这个方法的代码也将无法继续执行,异常处理机制开始搜索能够处理这种异常状

实验九 异常、断言与日志

实验九 异常.断言与日志 实验时间 2018-10-25 1.实验目的与要求 (1) 掌握java异常处理技术: (2) 了解断言的用法: (3) 了解日志的用途: (4) 掌握程序基础调试技巧: 2.实验内容和步骤 实验1:用命令行与IDE两种环境下编辑调试运行源程序ExceptionDemo1.ExceptionDemo2,结合程序运行结果理解程序,掌握未检查异常和已检查异常的区别. //异常示例1 public class ExceptionDemo1 { public static vo

python reload(sys)找不到,name 'reload' is not defined和Python3异常-AttributeError: module 'sys' has no att

基于python3.6.1版本,在一个.py文件中,加入这3行:import requests, re, sysreload(sys)sys.setdefaultencoding("utf-8") 出现这样的错误:sys.setdefaultencoding("utf-8")AttributeError: module 'sys' has no attribute 'setdefaultencoding' 原因分析:Python3字符串默认编码unicode, 所以

异常、断言、日志

处理异常错误 1)异常对象都是派生于Throwable类的一个实例,分成Error和Exception. 2)Error描述java运行时系统的内部错误和资源耗尽错误.应用程序不应该抛出这种异常. 3)Exception又分为IOException和Runtime Exception两种,Runtime Exception这种是由于程序错误导致的,一般有错误的类型转换.数组访问越界.访问null指针导致的,像Error和Runtime Exception这两种异常称为非受查异常,不必去捕获. 4

基础知识(11)- 异常、断言、日志和调试

11.1 处理错误  11.1.1 异常分类  11.1.2 声明已检查异常  11.1.3 如何抛出异常  11.1.4 创建异常类 11.2 捕获异常  11.2.1 捕获多个异常  11.2.2 再次抛出异常与异常链  11.2.3 finally子句  11.2.4 带资源的try语句  11.2.5 分析堆栈跟踪元素 11.3 使用异常机制的技巧 11.4 使用断言  11.4.1 启用和禁用断言  11.4.2 使用断言完成参数检查  11.4.3 为文档假设使用断言 11.5 记录

python3 异常

异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基类 StopIteration 迭代器没有更多的值 GeneratorExit 生成器(generator)发生异常来通知退出 StandardError 所有的内建标准异常的基类 ArithmeticError 所有数值计算错误的基类 FloatingPointError 浮点计算错误 Overfl