python基础学习(8/17)——异常处理

异常处理

    • 1.python标准异常总结
    • 2.try -except——捕获异常
    • 3.try -except - finally
    • 4.raise语句

异常:运行python语句是检测到的错误被称为异常

1.python标准异常总结

异常 解释
ImportError 导入模块错误
IndexError 索引超出序列的范围
KeyError 字典中查找一个不存在的关键字
MemoryError 内存溢出(可通过删除对象释放内存)
NameError 访问一个不存在的变量
NotlmplementedError 尚未实现的方法
OverflowError 数值运算超出最大限制
OSError 操作系统产生异常
SyntaxError 语法错误
InedntationError 缩进错误
TabError Tab和空格混淆
SystemError python编译器系统错误
SystemExit python编译器进程被关闭
TypeError 不同类型间的无效操作
UnicodeError Uncidoe相关的错误
UnicodeEncodeError Unicode编码时的错误
UnicodeDecodeError Unicode解码时的错误
UnicodeTranslateError Unicode转换时的错误
ValueError 传入无效的参数
ZeroDivisionError 除数为0
AssertionError 断言语句(assert)错误

2.try -except——捕获异常

try:
    检测范围
except Exception[as reason]:
       出现异常后的代码处理
  • 首先执行try语句(在关键之try和关键字except之间的语句
  • 如果没有异常发生,忽略except子句,try子句执行后结束
  • 如果在执行try子句中发生异常,那么try子句余下的部分就会被忽略。如果异常的类型和except之后的名称相符,那么对应的except子句将被执行。最后执行try语句之后的代码。
  • 如果一个异常没有任何的except匹配,那么这个异常将会传递给上层的try中
x=int(input('Enter the first number:'))
y=int(input('Enter the second number:'))
print(x/y) 

Enter the first number:10
Enter the second number:0
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-1-eee86b80c17c> in <module>
     1 x=int(input('Enter the first number:'))
     2 y=int(input('Enter the second number:'))
----> 3 print(x/y)

ZeroDivisionError: division by zero
#重编写
try:
   x=int(input('Enter the first number:'))
   y=int(input('Enter the second number:'))
   print(x/y)
except ZeroDivisionError: 
   print("the second number cant not  be zero!" )
   
Enter the first number:10
Enter the second number:0
the second number cant not  be zero!
  • 一个try语句中可能包含多个except子句,分别来处理不同的特定的异常,最多只有一个分支会被执行。
try:
    x=int(input('Enter the first number:'))
    y=int(input('Enter the second number:'))
    print(x/y)
except ZeroDivisionError: 
    print("the second number cant not  be zero!" )
except TyperError:
    print("That wasn't a number,was it?")
  • 一个except语句可以同时处理多个异常,这些异常将会被放在一个括号里面成为一个元组
try:
   x=int(input('Enter the first number:'))
   y=int(input('Enter the second number:'))
   print(x/y)
except (ZeroDivisionError,TyperError)as e: 
   print(e)
  • 在try语句中没有出现异常时,可以像条件语句或者循环语句一样添加一个else

3.try -except - finally

finally语句可用于发生异常时执行清理语句,若try语句中没有发生异常,finally语句都会被执行。

try:
   1/0
except NameError:
   print("Unknow variable")
finally:
   print("Cleaning up")

在同一条语句中可以同时包含try、except、else和finally

4.raise语句

在python中raise语句用来自动引发一个指定的异常

你可能感兴趣的:(python基础学习(8/17)——异常处理)