这是我参与8月更文挑战的第24天,活动详情查看:8月更文挑战
程序报错?太常见了,我们可以想办法修理好它
捕获异常
number="hello"
try:
#有可能出错的语句
number=int(number)
except Exception:
print("出错了")
else:
print("没错的时候运行")
except 后面指定了报错的异常类,在 python 中重要的内建异常类有:
Exception常规错误的基类AttributeError对象没有这个属性IOError输入/输出操作失败IndexError序列中没有此索引(index)KeyError映射中没有这个键NameError未声明/初始化对象 (没有属性)SyntaxErrorPython 语法错误SystemError一般的解释器系统错误ValueError传入无效的参数 ... 除了上述列出来的,其实 python 的异常类还有很多,当在except后面指定异常类之后,那么只有报这个类型异常的时候才会输出“出错了”
当然我们也可以去掉Exception,这样任何异常都可以捕获到
捕获多个异常
#指定多个异常
number="hello"
try:
#有可能出错的语句
number=int(number)
except ValueError:
print("ValueError出错了")
except Exception:
print("Exception出错了")
else:
print("没错的时候执行的语句")
finally:
print("无论发不发生异常,都会执行的语句")
#指定多个异常
number=[1,2,3]
try:
#有可能出错的语句
number=number[4]
except (ValueError,NameError,IndexError):
print("出错了")
else:
print("没错的时候运行")
自定义异常类
尽管 python 给我们提供了很多内置的异常类,但是还是不能满足精确定位的问题,我们可以通过创建一个新的exception类拥有自己的异常,异常应该继承自Exception类,可以直接继承,也可以间接继承
class MyError(Exception):
def __init__(self):
pass
def __str__(self):
return "this is error"
def Calc():
raise MyError() #通过raise语句抛出一个错误的实例
Calc()