本文已参与「新人创作礼」活动,一起开启掘金创作之路。
Python 的一些异常
BaseException:所有异常的 基类
Exception:常规异常的 基类
StandardError:所有的内建标准异常的基类
ArithmeticError:所有数值计算异常的基类
FloatingPointError:浮点计算异常
OverflowError:数值运算超出最大限制
ZeroDivisionError:除数为零
AssertionError:断言语句(assert)失败
AttributeError:尝试访问未知的对象属性
EOFError:没有内建输入,到达EOF标记
EnvironmentError:操作系统异常的基类
IOError:输入/输出操作失败
OSError:操作系统产生的异常(例如打开一个不存在的文件)
WindowsError:系统调用失败
ImportError:导入模块失败的时候
KeyboardInterrupt:用户中断执行
LookupError:无效数据查询的基类
IndexError:索引超出序列的范围
KeyError:字典中查找一个不存在的关键字
MemoryError:内存溢出(可通过删除对象释放内存)
NameError:尝试访问一个不存在的变量
UnboundLocalError:访问未初始化的本地变量
ReferenceError:弱引用试图访问已经垃圾回收了的对象
RuntimeError:一般的运行时异常
NotImplementedError:尚未实现的方法
SyntaxError:语法错误导致的异常
IndentationError:缩进错误导致的异常
TabError:Tab和空格混用
SystemError:一般的解释器系统异常
TypeError:不同类型间的无效操作
ValueError:传入无效的参数
UnicodeError:Unicode相关的异常
UnicodeDecodeError:Unicode解码时的异常
UnicodeEncodeError:Unicode编码错误导致的异常
UnicodeTranslateError:Unicode转换错误导致的异常
- 有些时候我们想让这个错误发生,当你认为可能会发生错误的时候,可以编写try-except代码块
举个栗子,当我们在面向对象的时候
"""
有一元二次方程a*x**2+b*x + c= 0,
编程求解该方程,并打印输出结果,要求程序提示用户输入系数a、b、c的值,
并进行必要的验证,通过验证后,程序首先判定该系数是否有实根,或者有一对共轭复根,
或者有一个实根,或者有两个不同的实根,根据不同的情况,分别打印输出结果。
"""
import math
while True:
try:
a_a = input('请输入系数a:')
if a_a.upper() == 'Q':
break
b_b = input('请输入系数b:')
if b_b.upper() == 'Q':
break
c_c = input('请输入系数c:')
if c_c.upper() == 'Q':
break
else:
a = float(a_a)
b = float(b_b)
c = float(c_c)
if b ** 2 - 4 * a * c == 0:
x1_1 = (-b + math.sqrt(b ** 2 - 4 * a * c)) / 2
print(str.format('方程有一个实根为:x1:{0:5.2f}', x1_1))
elif b ** 2 - 4 * a * c > 0:
x1 = (-b + math.sqrt(b ** 2 - 4 * a * c)) / 2
x2 = (-b - math.sqrt(b ** 2 - 4 * a * c)) / 2
print(str.format('方程有两个实根分别为:x1 = {0:5.2f}, x2 = {1:5.2f}', x1, x2))
elif b ** 2 - 4 * a * c < 0:
print('方程无实根,但存在一对共轭复根:')
pbs = (math.sqrt(-(b ** 2 - 4 * a * c)))/2
x = -b/2
print(f"方程有两个共轭复根别为:x1 ={x}+{round(pbs,2)}i , x2 = {x}-{round(pbs,2)}i ")
except:
print("输入q或Q退出,或者继续进行操作。")
可能在对象输入某个值的时候面向对象可能会输入非数字的值这时候程序调用,就会进入except代码,这时候即使代码出错也会继续运行。