python(错误和异常)

常见错误


(1)NameError:命名错误

(2)SyntaxError:语法错误

(3)IOError:IO错误

(4)ZeroDivisionError:除0错误

(5)ValueError:值错误

(6)KeyboardInterrupt:用户干扰退出

try & execpt



# try -> else -> finally

try:
      try_suite
except IOError, e:
      do_except
except ValueError, e:
      do_except
else:
    do_else
finally:
    do_finally

with as


with语句实质上是上下文管理

理论知识

上下文管理协议:包含方法:__enter__(),__exit()__

需要注意的是,with语句代码段中,如果出现了异常,那么将无法保证with语句一定能将file关闭。

 try:
      with open('test.txt', 'r') as f:
            f.seek(-1, os.SEEKSET)  # 此处会报错,代码意思是找到了文件头部之后的-1的位置,显然不存在。
except ValueError,e:
          handle_except

#  当代码中使用了try-except后,那么with语句在先将文件关闭后,再将error抛出,截获后再对error进行处理。

应用场景

1.文件操作;
2.进程线程之间互斥对象,例如互斥锁;
3.支持上下文的其他对象。

raise & assert


raise XXError("ErrorInfo") // python3以后的写法
raise XXError. "ErrorInfo" // python2中的写法,但在2中也支持上面的写法

raise NameError('HiThere')
    Traceback (most recent call last): 
    File "", line 1, in 
    NameError: HiThere

assert语句
断言语句:assert语句用于检测表达式是否为真,如果为假,引发AssertionError错误;

assert exception, "errorInfo"

标准异常 & 自定义异常


python(错误和异常)_第1张图片
Paste_Image.png

自定义异常:

// 定义
class FileError(IOError):
      pass

// 触发异常
assert FileError, "file Error!"

try:
     raise FileError, "Test FileError"
except FileError, e:
     print(e)
class CustomError(Exception):
      def __init__(self, info):
            Exception.__init__(self)   # 重写父类方法
            self.errorinfo = info
      def __str__(self):
            return "CustionError:%s" % self.errorinfo

try :
      raise CustomError("test CustomError")
except CustomError, e:
      print(e)   ##

你可能感兴趣的:(python(错误和异常))