文章目录
- 一、异常概述
- 二、异常处理语句
- 2.1 try ... except
- 2.2 try ... except ... else
- 2.3 try ... except ... finally
- 2.4 使用raise语句抛出异常
- 三、调试程序
- 3.1 使用assert语句调试程序
一、异常概述
就是在开发的过程中会发生一些错误,这些错误统称为“异常”
二、异常处理语句
2.1 try … except
try:
block1
except [ExceptionName [as alias]]:
block2
- block1可能出现问题的代码块
- [ExceptionName [as alias]] 可选参数,用于指定要捕获的异常
- block2 进行异常处理代码块
eg
if __name__ == '__main__':
try:
print(10 / 0)
except:
print("捕获成功")
>>>
捕获成功
2.2 try … except … else
esle 语句相当于没有发生异常所要处理的语句
if __name__ == '__main__':
try:
print(10 / 1)
except:
print("捕获成功")
else:
print("没有发生异常")
>>>
10.0
没有发生异常
2.3 try … except … finally
esle 语句相当于没有发生异常所要处理的语句
if __name__ == '__main__':
try:
print(10 / 1)
except:
print("捕获成功")
finally:
print("不论发生异常都要执行")
>>>
10.0
不论发生异常都要执行
if __name__ == '__main__':
try:
print(10 / 0)
except:
print("捕获成功")
finally:
print("不论发生异常都要执行")
>>>
捕获成功
不论发生异常都要执行
2.4 使用raise语句抛出异常
语法:
raise [ExceptionName [(reason)]]
[ExceptionName [(reason)]]
可选参数,用于指定抛出的异常名称,以及异常信息的相关描述。如果省略就会把当前的错误原样抛出
if __name__ == '__main__':
raise ValueError("分母不能为0")
三、调试程序
这里就不介绍各个编译器的断点和debug调试了
3.1 使用assert语句调试程序
语法:
assert experssion[,reason]
experssion: 条件表达式
reason 可选参数,理由
if __name__ == '__main__':
apple = 10
children = 5
assert apple > children,("苹果够分了")
>>>
assert apple < children,"苹果够分了"
AssertionError: 苹果够分了
通常assert配合try except 使用
def test():
apple = int(10)
children = int(5)
assert apple < children,"苹果够分了"
if __name__ == '__main__':
try:
test()
except AssertionError as e:
print("判断到出错了",e)
>>>
>判断到出错了 苹果够分了