自己慢慢积累。
分类: Python/Ruby
2016-03-08 10:59:03
try: #运行try语句块,并试图捕获异常 except : #如果name1异常发现,那么执行该语句块。 except (name2, name3): #如果元组内的任意异常发生,那么捕获它 except as : #如果name4异常发生,那么进入该语句块,并把异常实例命名为variable except: #发生了以上所有列出的异常之外的异常 else: #如果没有异常发生,那么执行该语句块 finally: #无论是否有异常发生,均会执行该语句块。
说明
raise语句用来手动抛出一个异常,有下面几种调用格式:
当使用from的时候,第二个表达式指定了另一个异常类或实例,它会附加到引发异常的__cause__属性。如果引发的异常没有捕获,Python把异常也作为标准出错消息的一部分打印出来:
比如下面的代码:
try: 1/0 except Exception as E: raise TypeError('bad input') from E
执行的结果如下:
Traceback (most recent call last):
File "hh.py", line 2, in <module> 1/0 ZeroDivisionError: division by zero
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "hh.py", line 4, in <module>
raise TypeError('bad input') from E
TypeError: bad input
assert主要用来做断言,通常用在单元测试中较多,到时候再做介绍。
with语句支持更丰富的基于对象的协议,可以为代码块定义支持进入和离开动作。
with语句对应的环境管理协议要求如下:
下面为一个简单的自定义的上下文管理类。
class Block: def __enter__(self): print('entering to the block') return self def prt(self, args): print('this is the block we do %s' % args) def __exit__(self,exc_type, exc_value, exc_tb): if exc_type is None:
print('exit normally without exception') else:
print('found exception: %s, and detailed info is %s' % (exc_type, exc_value)) return False with Block() as b:
b.prt('actual work!') raise ValueError('wrong')
如果注销到上面的raise语句,那么会正常退出。
在没有注销掉该raise语句的情况下,运行结果如下:
entering to the block
this is the block we do actual work! found exception: 'ValueError' >, and detailed info is wrong
Traceback (most recent call last):
File "hh.py", line 18, in <module>
raise ValueError('wrong')
ValueError: wrong
如果发生异常,那么通过调用sys.exc_info()函数,可以返回包含3个元素的元组。 第一个元素就是引发异常类,而第二个是实际引发的实例,第三个元素traceback对象,代表异常最初发生时调用的堆栈。如果一切正常,那么会返回3个None。
|Exception Name|Description|
|BaseException|Root class for all exceptions|
| SystemExit|Request termination of Python interpreter|
|KeyboardInterrupt|User interrupted execution (usually by pressing Ctrl+C)|
|Exception|Root class for regular exceptions|
| StopIteration|Iteration has no further values|
| GeneratorExit|Exception sent to generator to tell it to quit|
| SystemExit|Request termination of Python interpreter|
| StandardError|Base class for all standard built-in exceptions|
| ArithmeticError|Base class for all numeric calculation errors|
| FloatingPointError|Error in floating point calculation|
| OverflowError|Calculation exceeded maximum limit for numerical type|
| ZeroDivisionError|Division (or modulus) by zero error (all numeric types)|
| AssertionError|Failure of assert statement|
| AttributeError|No such object attribute|
| EOFError|End-of-file marker reached without input from built-in|
| EnvironmentError|Base class for operating system environment errors|
| IOError|Failure of input/output operation|
| OSError|Operating system error|
| WindowsError|MS Windows system call failure|
| ImportError|Failure to import module or object|
| KeyboardInterrupt|User interrupted execution (usually by pressing Ctrl+C)|
| LookupError|Base class for invalid data lookup errors|
| IndexError|No such index in sequence|
| KeyError|No such key in mapping|
| MemoryError|Out-of-memory error (non-fatal to Python interpreter)|
| NameError|Undeclared/uninitialized object(non-attribute)|
| UnboundLocalError|Access of an uninitialized local variable|
| ReferenceError|Weak reference tried to access a garbage collected object|
| RuntimeError|Generic default error during execution|
| NotImplementedError|Unimplemented method|
| SyntaxError|Error in Python syntax|
| IndentationError|Improper indentation|
| TabErrorg|Improper mixture of TABs and spaces|
| SystemError|Generic interpreter system error|
| TypeError|Invalid operation for type|
| ValueError|Invalid argument given|
| UnicodeError|Unicode-related error|
| UnicodeDecodeError|Unicode error during decoding|
| UnicodeEncodeError|Unicode error during encoding|
| UnicodeTranslate Error|Unicode error during translation|
| Warning|Root class for all warnings|
| DeprecationWarning|Warning about deprecated features|
| FutureWarning|Warning about constructs that will change semantically in the future|
| OverflowWarning|Old warning for auto-long upgrade|
| PendingDeprecation Warning|Warning about features that will be deprecated in the future|
| RuntimeWarning|Warning about dubious runtime behavior|
| SyntaxWarning|Warning about dubious syntax|
| UserWarning|Warning generated by user code|
下面关于Python的文章您也可能喜欢,不妨看看:
Python:在指定目录下查找满足条件的文件
Python2.7.7源码分析
无需操作系统直接运行 Python 代码
上源码安装Python3.4
《Python核心编程 第二版》.(Wesley J. Chun ).[高清PDF中文版]
《Python开发技术详解》.( 周伟,宗杰).[高清PDF扫描版+随书视频+代码]
Python脚本获取Linux系统信息
在下用Python搭建桌面算法交易研究环境
Python 语言的发展简史
Python 的详细介绍:
Python 的下载地址:
本文永久更新链接地址: