Python下异常处理

程序报错?太常见了,咱们能够想办法修理好它

捕获异常

number="hello"
try:
    #有可能出错的语句
    number=int(number)
except Exception:
    print("出错了") 
else:
    print("没错的时候运行")

except后面指定了报错的异常类,在python中重要的内建异常类有:python

  1. Exception 常规错误的基类
  2. AttributeError 对象没有这个属性
  3. IOError 输入/输出操做失败
  4. IndexError 序列中没有此索引(index)
  5. KeyError 映射中没有这个键
  6. NameError 未声明/初始化对象 (没有属性)
  7. SyntaxError Python 语法错误
  8. SystemError 通常的解释器系统错误
  9. ValueError 传入无效的参数

...
除了上述列出来的,其实python的异常类还有不少,当在except后面指定异常类以后,那么只有报这个类型异常的时候才会输出“出错了”
固然咱们也能够去掉Exception,这样任何异常均可以捕获到
捕获多个异常如何作this

#指定多个异常
number="hello"
try:
    #有可能出错的语句
    number=int(number)
except ValueError:
    print("ValueError出错了")   
except Exception:
    print("Exception出错了") 
else:
    print("没错的时候执行的语句")    
finally:
    print("不管发不发生异常,都会执行的语句")
    
#指定多个异常
number=[1,2,3]
try:
    #有可能出错的语句
    number=number[4]
except (ValueError,NameError,IndexError):
    print("出错了")   
else:
    print("没错的时候运行")

自定义异常类

尽管python给咱们提供了不少内置的异常类,可是仍是不能知足精肯定位的问题,咱们能够经过建立一个新的exception类拥有本身的异常,异常应该继承自Exception类,能够直接继承,也能够间接继承code

class MyError(Exception):
    def __init__(self):
        pass
    def __str__(self):
        return "this is error"        

def Calc():
    raise MyError()   #经过raise语句抛出一个错误的实例 

Calc()
相关文章
相关标签/搜索