标签:deadlock sla 逻辑 unicode poi bsp 逻辑错误 class proc
、异常 Exception
错误 和 异常的区别:
错误:Error
异常:Exception
错误和异常:
在高级编程语言中一般都有错误和异常的概念,异常是可以捕获,并被处理的,但是错误是不能被捕获的。
举例:
异常:
错误:
总结:
一个健壮的程序
尽可能的避免错误
尽可能的捕获,处理各种异常。
Python的特点是,将Error放到异常类中。
2、产生异常:
产生:
举例:
解释器自动抛出:
手动抛出:
程序会在异常抛出的地方中断执行,如果不捕获,就会提前结束程序(其实是终止当前线程的执行)
raise:
raise 后面什么都没有,表示抛出最近一个被激活的异常,如果没有被激活的异常,则抛类型异常,这种但是很少使用。
raise 后要求应该是BaseException类的子类或实例,如果是类,将被无参实例化
raise IndexError() :无参构造 ----BaseException的派生类
raise IndexError :无参构造 ----BaseException的派生类
raise IndexError(‘index error‘) :有参构造 ----BaseException的派生类
3、异常的捕获:
语法:
1 try: 2 待捕获异常的代码块,只要出现一条异常,就会终止,后面的执行,跳到except 3 except [异常类型]: 4 异常的处理代码块
举例:
1:
2:
3:
4、异常类及继承层次:
获取BaseException的子类:
1 def foo(cls, count=0): 2 for i in cls.__subclasses__(): 3 if count == 0: 4 print(count * ‘\t‘ + ‘+-- ‘ + str(i)) 5 else: 6 print((count - 1) * ‘\t‘+ ‘|‘ + ‘\t‘ + ‘+-- ‘ + str(i)) 7 if i.__subclasses__() : 8 count += 1 9 foo(i, count) 10 else: 11 continue 12 13 14 foo(BaseException)
结果:
1 +-- <class ‘Exception‘> 2 | +-- <class ‘TypeError‘> 3 | +-- <class ‘StopAsyncIteration‘> 4 | +-- <class ‘StopIteration‘> 5 | +-- <class ‘ImportError‘> 6 | +-- <class ‘ModuleNotFoundError‘> 7 | +-- <class ‘zipimport.ZipImportError‘> 8 | +-- <class ‘OSError‘> 9 | +-- <class ‘ConnectionError‘> 10 | +-- <class ‘BrokenPipeError‘> 11 | +-- <class ‘ConnectionAbortedError‘> 12 | +-- <class ‘ConnectionRefusedError‘> 13 | +-- <class ‘ConnectionResetError‘> 14 | +-- <class ‘BlockingIOError‘> 15 | +-- <class ‘ChildProcessError‘> 16 | +-- <class ‘FileExistsError‘> 17 | +-- <class ‘FileNotFoundError‘> 18 | +-- <class ‘IsADirectoryError‘> 19 | +-- <class ‘NotADirectoryError‘> 20 | +-- <class ‘InterruptedError‘> 21 | +-- <class ‘PermissionError‘> 22 | +-- <class ‘ProcessLookupError‘> 23 | +-- <class ‘TimeoutError‘> 24 | +-- <class ‘io.UnsupportedOperation‘> 25 | +-- <class ‘EOFError‘> 26 | +-- <class ‘RuntimeError‘> 27 | +-- <class ‘RecursionError‘> 28 | +-- <class ‘NotImplementedError‘> 29 | +-- <class ‘_frozen_importlib._DeadlockError‘> 30 | +-- <class ‘NameError‘> 31 | +-- <class ‘UnboundLocalError‘> 32 | +-- <class ‘AttributeError‘> 33 | +-- <class ‘SyntaxError‘> 34 | +-- <class ‘IndentationError‘> 35 | +-- <class ‘TabError‘> 36 | +-- <class ‘LookupError‘> 37 | +-- <class ‘IndexError‘> 38 | +-- <class ‘KeyError‘> 39 | +-- <class ‘encodings.CodecRegistryError‘> 40 | +-- <class ‘ValueError‘> 41 | +-- <class ‘UnicodeError‘> 42 | +-- <class ‘UnicodeEncodeError‘> 43 | +-- <class ‘UnicodeDecodeError‘> 44 | +-- <class ‘UnicodeTranslateError‘> 45 | +-- <class ‘io.UnsupportedOperation‘> 46 | +-- <class ‘AssertionError‘> 47 | +-- <class ‘ArithmeticError‘> 48 | +-- <class ‘FloatingPointError‘> 49 | +-- <class ‘OverflowError‘> 50 | +-- <class ‘ZeroDivisionError‘> 51 | +-- <class ‘SystemError‘> 52 | +-- <class ‘encodings.CodecRegistryError‘> 53 | +-- <class ‘ReferenceError‘> 54 | +-- <class ‘MemoryError‘> 55 | +-- <class ‘BufferError‘> 56 | +-- <class ‘Warning‘> 57 | +-- <class ‘UserWarning‘> 58 | +-- <class ‘DeprecationWarning‘> 59 | +-- <class ‘PendingDeprecationWarning‘> 60 | +-- <class ‘SyntaxWarning‘> 61 | +-- <class ‘RuntimeWarning‘> 62 | +-- <class ‘FutureWarning‘> 63 | +-- <class ‘ImportWarning‘> 64 | +-- <class ‘UnicodeWarning‘> 65 | +-- <class ‘BytesWarning‘> 66 | +-- <class ‘ResourceWarning‘> 67 | +-- <class ‘locale.Error‘> 68 | +-- <class ‘warnings._OptionError‘> 69 +-- <class ‘GeneratorExit‘> 70 +-- <class ‘SystemExit‘> 71 +-- <class ‘KeyboardInterrupt‘>
捕获特定异常: try: 只要出现一条异常,就会终止当前try 里边的都终止,后面的 不会执行 except FileNotFoundError: 捕获特定的异常!!!!!!!!!!! 这里的代码,用来处理异常。 sys.exit(0) 不管是几 都会触发一个异常。即便是0,但是很少调用。 自定义的异常,继承Exception 语法错误是无法捕获的!!!! 多个异常捕获,父类的异常往下写。如果对某种异常有特定的处理,就提取出来,方到上面 多个except,进入一个except,如果处理了,其他的except就不进去了。 finally 里边的肯定执行 多个return,压栈,第一个弹出的,作为返回值。 一般return不放在finlly中,会压制异常 raise和return 不推荐同时使用, 矛盾。 else:没有异常,就执行,类似for循环,没有break 或return 就执行
标签:deadlock sla 逻辑 unicode poi bsp 逻辑错误 class proc
原文地址:https://www.cnblogs.com/JerryZao/p/9697172.html