python Exception

1.except:用来捕捉异常,如果没有捕捉到,则向上层exception传递

2.finally:用来保证其代码一定会执行,可以做收尾工作,比如关闭文件等等。

3.在with as 中,

4.try语句执行流程,

  首先程序标识try语句启动时候的程序环境(便于后面恢复)。

  1.遇到异常

    1.跳转到第一个匹配的except语句执行,执行完毕,跳到try之后代码执行。

    2.如果没有匹配的except语句,则向上传递try之前(传到顶层,则系统处理,终止执行并打印出错信息)

  2.如果没有遇到异常,则执行else语句。

  3.finanlly:如果遇到异常,执行完这层异常处理后执行finally,或者该层没有处理则执行finally后抛出到上层。

5.语法

try:#后面可以接 except {else};      finally;      except {else} finally.

except:#捕捉某异常

except:#捕捉某异常

except:#捕捉某异常

else:#无异常情况,必须与except连用

finally:#保证执行

6.Exception异常:except Exception: 捕捉所有除了和系统退出有关的一切异常。

7.raise

raise  #重新引发异常
raise Exception #隐式创建不带参数的异常类
raise Exception()
raise Exception from otherException #异常链

8.assert:用于显示用户设定的约束条件,data用于显示

  assert 条件,data

9.with as:支持文件,锁等

  _enter_方法 ,返回值赋值给as

  _exit_(type,value,traceback)方法:with代码块无论有无异常,该函数被调用,如果返回值为false,有异常则重新引发异常。

时间: 2024-12-11 10:10:17

python Exception的相关文章

为什么会出现Python Exception <class 'gdb.MemoryError'> Cannot access memory at address 问题?

问题描述:        把列表listview写入notebook里. 在main函数中, win = create_and_set_a_window(); book = gtk_notebook_new(); gtk_notebook_set_tab_pos( GTK_NOTEBOOK( book ), GTK_POS_LEFT ); gtk_container_add( GTK_CONTAINER( win ), book ); create_page_one( book, win );

python Exception中的raise、assert

使用raise抛出异常 当程序出现错误,python会自动引发异常,也可以通过raise显式地引发异常.一旦执行了raise语句,raise后面的语句将不能执行. 演示raise用法. try: s = None if s is None: print "s 是空对象" raise NameError #如果引发NameError异常,后面的代码将不能执行 print len(s) except TypeError: print "空对象没有长度" 自定义异常 py

python exception的传递

try: block except1: except2: ... 如果block中出现了except,那么会先取匹配except1,如果匹配了,进行处理,程序继续执行. 如果except1没有匹配上,那么继续匹配except2. 如果该层的try except都没有匹配到,那么就会去外层的try except去匹配,直到匹配到为止.

<<Python基础教程>>学习笔记 | 第08章 | 异常

------ 什么是异常:Python用异常对象(exception object)来表示异常情况.如果异常信息未被处理或捕捉. 程序就会用回潄来终止执行 >>> 1/0 Traceback (most recent call last): #Traceback: 一种错误信息 File "<stdin>", line 1, in ? ZeroDivisionError: integer division or modulo by zero 每个异常都是一

programing Python --Sys module

Recall that every python module has a built_in __name__ variable that python sets to the __main__ string only when the file is run as a program,not when it's imported as library so in the python fiel if __name__ == "__main__" : .... is the top-l

Python 学习之文件对象的属性和方法简介

python的文件处理和相关输入输出能力.介绍文件对象(它的内建函数,内建方法和属性),标准文件,同时讨论文件系统的访问方法,文件执行,以及相关文件模块. 一.内建函数open 语法:file_object = open(file_name,access_mode='r',buffering=-1) file_name    要打开的绝对路径或者相对路径文件名 access_mode    处理文件的模式,常规的模式有r.w.a.r+.w+.a+.其中r模式的前提是系统本身存在该文件,读取模式.

使用Boost.Python构建混合系统(译)

目录 Building Hybrid Systems with Boost.Python 摘要(Abstract) 介绍(Introduction) 设计目标 (Boost.Python Design Goals) Hello Boost.Python World 库概述 (Library Overview) 类公开 (Exposing Classes) 序列化 Serialization 对象接口 Object interface 考虑混合编程 Thinking hybrid 开发历史 Dev

GDB调试之二栈溢出

linux下应用程序中经常会发生段错误段错误基本上是由于访问非法内存所导致的如栈溢出.数组越界访问.malloc/free内存所引起的.在linux下发生段错误时会生成core dump核心转储文件里面记录了发生段错误时的函数调用关系. ubuntu14.04下默认发生段错误时并不产生核心转储文件需要额外的配置通过命令 ulimit -c查看是否允许的core dump文件大小.如果只是临时需要用到可以使用命令ulimit -c unlimited临时打开则发生段错误时会在当前目录下产生core

file、os、pickle

文件对象: 文本都是字节序列 var_name = open (file_name[mode,[bufsize]]) mode: r w a r+ w+ a+ b表示已二进制模式打开文件 rb wb ab rb+ wb+ ab+ 缓存: 0表示不使用缓存 负数表示使用系统默认的缓存 1表示使用缓存 整数表示使用大小的缓冲区 file.seek(offset[whence]) whence:起点 0:从文件头 1:从当前位置 2:从文件尾 offset:偏移量 f1.seek(0,2) 跳转到文件