常见异常:http://mrw.so/6aJlZB

Debug就是排除错误的过程。比如运行下面代码,我们看报错

  1. a = input('请输入密码:')
  2. if a == '123456'
  3. print('通过')

image.png

报错信息会告诉你第几行, ^符号代表出错的位置,这里代表末尾,invalid syntax是语法错误。

image.png

另外还有就是知识点记得不牢靠。比如字典里的索引是从0开始的,想取第一个数值,就是print(list[0])

还有一种就是思路不清晰,所以写代码时候要多用注释#,记录每一步的操作。另外就是用print()函数,当你写的代码总是不对,又弄不明白哪里不对的时候,使用#号把后面的代码注释掉,一步一步运行,可以帮助排除错误。

最后一种就是被动进坑。

  1. #你可以输入1试试。
  2. age = input('你今年几岁了?')
  3. print(age)
  4. print(type(age))

如果报错该如何做呢?我们要就告诉系统报错的情况下该做什么。可以使用 try…except…

try except

当程序发生不同的意外情况时,会对应特定的异常类型,Python 解释器会根据该异常类型选择对应的 except 块来处理该异常。

try except 语句的执行流程如下:

**
首先执行 try 中的代码块,如果执行过程中出现异常,系统会自动生成一个异常类型,并将该异常提交给 Python 解释器,此过程称为捕获异常。
当 Python 解释器收到异常对象时,会寻找能处理该异常对象的 except 块,如果找到合适的 except 块,则把该异常对象交给该 except 块处理,这个过程被称为处理异常。
如果 Python 解释器找不到处理异常的 except 块,则程序运行终止,Python 解释器也将退出。

  1. try:
  2. a = int(input("输入被除数:"))
  3. b = int(input("输入除数:"))
  4. c = a / b
  5. print("您输入的两个数相除的结果是:", c )
  6. except (ValueError, ArithmeticError):
  7. print("程序发生了数字格式异常、算术异常之一")
  8. except :
  9. print("未知异常")
  10. print("程序继续运行")

上面程序中,第 6 行代码使用了(ValueError, ArithmeticError)来指定所捕获的异常类型,这就表明该 except 块可以同时捕获这 2 种类型的异常;第 8 行代码只有 except 关键字,并未指定具体要捕获的异常类型,这种省略异常类的 except 语句也是合法的,它表示可捕获所有类型的异常,一般会作为异常捕获的最后一个 except 块。

获取特定异常的有关信息:

我们已经可以捕获程序中可能发生的异常,并对其进行处理。但是,由于一个 except 可以同时处理多个异常,那么我们如何知道当前处理的到底是哪种异常呢?

其实,每种异常类型都提供了如下几个属性和方法,通过调用它们,就可以获取当前处理异常类型的相关信息:

  • args:返回异常的错误编号和描述字符串;
  • str(e):返回异常信息,但不包括异常信息的类型;
  • repr(e):返回较全的异常信息,包括异常信息的类型。
  1. try:
  2. 1/0
  3. except Exception as e:
  4. # 访问异常的错误编号和详细信息
  5. print(e.args)
  6. print(str(e))
  7. print(repr(e))
  8. # 运行结果如下:
  9. '''
  10. ('division by zero',)
  11. division by zero
  12. ZeroDivisionError('division by zero')
  13. '''

拓展知识链接:http://c.biancheng.net/view/4599.html

  1. # 提示:需要用到try……except……语句,以及while语句和break语句。
  2. try:
  3. age = int(input('你今年几岁了?'))
  4. #ValueError是异常名称
  5. except ValueError:
  6. print('要输入整数哦')
  7. if age < 18:
  8. print('不可以喝酒噢')

更多报错类型查看:https://www.runoob.com/python/python-exceptions.html