异常和Bug

异常+Bug

Bug的常见类型

粗心导致的语法错误SyntaxError

age = ('请输入你的年龄:')
print(type(age))
if age > 18:
	print('成年人')
#TypeError: '>' not supported between instances of 'str' and 'int'

#解决方法
#改为	if int(age) > 18:

while i < 10:
	print i

#SyntaxError: Missing parentheses in call to 'print'. Did you mean print(i)?

#问题:1.没有给i定义。2.无限循环

int i = 0
while i < 10:
	print i	
	i+=1

自查

  • 漏了末尾的冒号,如if语句,循环语句,else子句等
  • 缩进错误,该缩进的没缩进,不该缩进的瞎缩进
  • 把英文符号写成中文符号,比如说:引号,冒号,括号
  • 字符串拼接的时候,把字符串和数字拼在一起
  • 没有定义变量,比如说while的循环条件的变量
  • "==”比较运算符和”=”赋值运算符的混用

知识不熟练导致的错误

1.索引越界问题IndexError

list = [11,22,33,44]
print(list[4])

2.append()方法的使用掌握不熟练

list = []
list = append('a','b','c')
print(list)

思路不清导致的错误

  1. 使用print()函数
  2. 使用注释暂时注释掉错误代码

被动掉坑导致的错误

被动掉坑:程序代码逻辑没有错,只是因为用户错误操作或者一些“例外情况"而导致的程序崩溃

num1 = int(input(‘请输入第一个整数’))
num2 = int(input(‘请输入第二个整数’))
print(num1/num2)

解决方法

Python提供了异常处理机制,可以在异常出现时即时捕获,然后内部“消化”,让程序继续运行

1.使用try-except

try:
	代码块
expext 异常1:
	处理
expext 异常2:
	处理
......
expext 异常n:
	处理

2.try-except-else

如果try块中没有抛出异常,则执行else块,如果try中抛出异常,则执行except块

3.try-except-else-finally

finally块无论是否发生异常都会被执行,能常用来释放try块中申请的资源

异常

常见的异常

常见的异常描述
ZeroDivisionError除(或取模)零(所有数据类型)
IndexError序列中没有此索引(index)
KeyError映射中没有这个键
NameError未声明/初始化对象(没有属性)
SyntaxErrorPython语法错误
ValueError传入无效的参数

traceback模块

使用traceback模块打印信息

	import traceback
	try:
		print('------------')
		num = 10/0
	except:
		traceback.print_exe()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值