9.1你不可能总是对的
因为我们是人,不是神,所以我们经常会犯错。当然程序员也不例外,就算是经验丰富的码农,也不能保证写出来的代码百分之百没有任何问题(要不然哪来那么多0Day漏洞)。另外,作为一个合格的程序员,在编程的时候一定要意识到一点,就是永远不要相信你的用户。要把他们想象成熊孩子,把他们想象成黑客,这样你写出来的程序自然会更加安全和稳定。
那么既然程序总会出问题,我们就应该学会用适当的方法去解决问题。程序出现逻辑错误或者用户输入不合法都会应发异常,但这些异常并不是致命的,不会导致程序崩溃死掉。可以利用Python提供的异常处理机制,在异常出现的时候及时捕获,并从内部自我消化掉。
那么什么是异常呢?举个例子:
上面的例子就抛出了一个FileNotFoundError异常,那Python通常还可能抛出哪些异常呢?这里给大家做个总结,今后遇到这样的异常是就不会感到陌生了。
Python标准异常总结:
以下是 Python 内置异常类的层次结构:
1.AssertionError:断句语句(assert)失败
大家还记得断句语句吧?在关于分支和循环的章节里讲过。当assert这个关键字后边的条件为假的时候,程序将停止并抛出AssertionError异常。assert语句一般是在测试程序的时候用于在代码中置入检查点:
2.AttibuteError:尝试访问未知的对象属性
当试图访问的对象属性不存在时抛出的异常:
3.IndexError:索引超出序列的范围
在使用序列的时候就常常会遇到IndexError异常,原因是索引超出序列范围的内容:
4.KerError:字典中查找一个不存在的关键字
当试图在字典中查找一个不存在的关键字时就会引发KerError异常,因此建议使用dict.get()方法:
5.NameError:尝试访问一个不存在的变量
当尝试访问一个不存在的变量时,Python会抛出NameError异常:
6.OSError:操作系统产生的异常
顾名思义就是操作系统产生的异常,像打开一个不存在的文件会引发FileNotFoundError,而这个FileNotFoundError就是OSError的子类。
7.SyntaxError:Python的语法错误
如果遇到SyntaxError是Python的语法错误,这时Python的代码并不能继续执行,你应该先找到并改正错误:
8.TypeError:不同类型间的无效操作
有些类型不同是不能相互进行计算的,否则会抛出TypeError异常:
9.ZeroDivisionError:除数为零
地球人都知道除数不能为零,所以除以零就会引发ZeroDivisionError异常: