try

python异常处理

早过忘川 提交于 2019-12-23 19:24:05
1.什么是异常 程序出现了错误(在编译或者执行过程中) >>> a Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> a NameError: name 'a' is not defined NameError 表示我们访问了一个没有初始化的变量. 在 Python 解释器的符号表没有找到那个 变量. 任何可访问的变量必须在名称空间里列出. 访问变量需要由解释器进行搜索, 如果请求的名字没有在任何名称空间里找到, 那么将会生成一个 NameError 异常. >>> 1/0 Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> 1/0 ZeroDivisionError: division by zero 任何数值被零除都会导致一个 ZeroDivisionError 异常. 2.常见异常种类 异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基类 StopIteration 迭代器没有更多的值 GeneratorExit 生成器

Python错误和异常概念(总)

孤人 提交于 2019-12-23 17:47:50
转载请标明出处: http://www.cnblogs.com/why168888/p/6435956.html 本文出自: 【Edwin博客园】 Python错误和异常概念(总) 1. 错误和异常的处理方式 1.常见的错误 a:NameError if True:SyntaxError f = oepn('1.txt'):IOError 10/0:ZeroDivisionError a = int('d'):ValueError 程序运行中断:KeyboardInterrupt 2.Python-使用try_except处理异常(1) try: try_suite except Exception [e]: exception_block try用来捕获try_suite中的错误,并且将错误交给except处理 except用来处理异常,如果处理异常和设置捕获异常一致,使用exception_block处理异常 # case 1 try: undef except: print 'catch an except' # case 2 try: if undef except: print 'catch an except' case1:可以捕获异常,因为是运行时错误 case2:不能捕获异常,因为是语法错误,运行前错误 -- # case 3 try: undef except

面向对象--选课系统作业

狂风中的少年 提交于 2019-12-23 11:13:16
1、readme 作业名称:选课系统 测试环境:win7系统,python3.7.0,工具:pycharm-community-2018.1.4 题目:选课系统开发,要求有四种角色:学校、学员、课程、讲师 详细要求: 1、创建北京、上海 2 所学校 2、创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开 #(管理员类创建课程、学校) 看大小什么属于什么 3、课程包含,周期,价格,通过学校创建课程 #(解读:管理员创建课程时通过学校类创建------继承方法) 4、通过学校创建班级, 班级关联课程、讲师 #(管理员创建班级时,继承学校类创建, 班级添加 课程、讲师属性) 5、创建学员时,选择学校,关联班级 # 创建学员,添加学校。为班级添加学员属性 6、创建讲师角色时要关联学校 # 创建讲师 ,为学校添加讲师属性 7、提供两个角色接口 8、为学员、讲师、管理员分别提供用户界面,并提供对应功能: (1) 学员视图, 可以注册, 交学费, 选择班级, (2) 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩 (3) 管理视图,创建讲师, 创建班级,创建课程 注1:上面的操作产生的数据都通过pickle序列化保存到文件里 注2:此作业必须画流程图,图中标注好不同类或对象之间的调用关系 说明

异常处理

£可爱£侵袭症+ 提交于 2019-12-23 10:50:47
一,异常和错误 part1:程序中难免出现错误,而错误分成两种 1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 def test: pass #语法错误示范三 print(haha 语法错误 语法错误 2.逻辑错误(逻辑错误) #用户输入不完整(比如输入为空)或者输入非法(输入不是数字) num=input(">>: ") int(num) #无法完成计算 res1=1/0 res2=1+'str' 逻辑错误 part2:什么是异常 异常就是程序运行时发生错误的信号,在python中,错误触发的异常如下 part3:python中的异常种类 在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同的异常,一个异常标识一种错误 # 触发IndexError l=['egon','aa'] l[3] # 触发KeyError dic={'name':'egon'} dic['age'] #触发ValueError s='hello' int(s) 错误举例 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输入/输出异常;基本上是无法打开文件 ImportError 无法引入模块或包

Java动态代理深入解析

女生的网名这么多〃 提交于 2019-12-23 10:49:53
要想了解Java动态代理,首先要了解什么叫做代理,熟悉设计模式的朋友一定知道在Gof总结的23种设计模式中,有一种叫做代理(Proxy)的对象结构型模式,动态代理中的代理,指的就是这种设计模式。 在我看来所谓的代理模式,和23种设计模式中的“装饰模式”是一个东西。23种设计模式中将它们作为两种模式,网上也有些文章讲这两种模式的异同,从细节来看,确实可以人为地区分这两种模式,但是抽象到一定高度后,我认为这两种模式是完全一样的。因此学会了代理模式,也就同时掌握了装饰模式。 代理模式 代理模式简单来说,就是对一个对象进行包装,包装后生成的对象具有和原对象一样的方法列表,但是每个方法都可以是被包装过的。 静态代理 让我们先来看一段代码: package common; public class Test { static interface Subject{ void sayHi(); void sayHello(); } static class SubjectImpl implements Subject{ @Override public void sayHi() { System.out.println("hi"); } @Override public void sayHello() { System.out.println("hello"); } } static class

Socket 编程

风流意气都作罢 提交于 2019-12-23 05:35:44
套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。 传输层 实现 端到端 的通信,因此,每一个传输层连接有两个端点。那么,传输层连接的端点是什么呢?不是 主机 ,不是主机的 IP地址 ,不是应用进程,也不是传输层的协议端口。传输层连接的端点叫做套接字(socket)。 根据RFC793的定义: 端 口号 拼接到IP地址就构成了套接字。所谓套接字,实际上是一个通信端点,每个套接字都有一个套接字序号,包括主机的IP地址与一个16位的主机端口号,即形如(主机IP地址:端口号)。例如,如果IP地址是210.37.145.1,而端口号是23,那么得到套接字就是(210.37.145.1:23)。 总之,套接字Socket=(IP地址:端口号),套接字的表示方法是点分十进制的IP地址后面写上端口号,中间用冒号或逗号隔开。每一个传输层连接唯一地被通信两端的两个端点(即两个套接字)所确定。 套接字可以看成是两个网络应用程序进行通信时,各自通信连接中的一个端点。通信时,其中的一个网络应用程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过网络接口卡的传输介质将这段信息发送给另一台主机的Socket中

Thread.join()方法

走远了吗. 提交于 2019-12-23 03:14:36
thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。 t.join(); //使调用线程 t 在此之前执行完毕。 t.join(1000); //等待 t 线程,等待时间是1000毫秒 先上一段JDK中代码: Java代码 /** * Waits at most <code>millis</code> milliseconds for this thread to * die. A timeout of <code>0</code> means to wait forever. */ //此处A timeout of 0 means to wait forever 字面意思是永远等待,其实是等到t结束后。 public final synchronized void join( long millis) throws InterruptedException { long base = System.currentTimeMillis(); long now = 0; if (millis < 0) { throw new IllegalArgumentException( "timeout value is negative"); } if

ReentrantLock Condition

荒凉一梦 提交于 2019-12-23 00:40:25
package com.company.bingfa; import org.omg.PortableServer.THREAD_POLICY_ID; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock; class MyService{ ReentrantLock reentrantLock = new ReentrantLock(); Condition conditionA = reentrantLock.newCondition(); Condition conditionB = reentrantLock.newCondition(); public void waitA(){ try{ reentrantLock.lock(); System.out.println("start A"); conditionA.await(); System.out.println("finish A"); } catch (InterruptedException e) { e.printStackTrace(); } finally { reentrantLock.unlock(); } } public void waitB(){ try{

生产者消费者问题虚假唤醒

て烟熏妆下的殇ゞ 提交于 2019-12-23 00:30:32
生产者消费者问题演示及解决 问题一: package com . mock ; import org . junit . jupiter . api . Test ; public class TestProducerAndConsumer { @Test public void test ( ) { Product p = new Product ( ) ; new Thread ( new Producer ( p ) , "生产者1" ) . start ( ) ; new Thread ( new Consumer ( p ) , "消费者1" ) . start ( ) ; } } class Producer implements Runnable { private Product product ; public Producer ( Product product ) { this . product = product ; } @Override public void run ( ) { for ( int i = 0 ; i < 10 ; i ++ ) { product . produce ( ) ; } } } class Consumer implements Runnable { private Product product ; public

Jackson 框架,轻易转换JSON

可紊 提交于 2019-12-23 00:11:05
转自 hoojo Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。 前面有介绍过json-lib这个框架,在线博文: http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.html 相比json-lib框架,Jackson所依赖的jar包较少,简单易用并且性能也要相对高些。而且Jackson社区相对比较活跃,更新速度也比较快。 一、准备工作 1、 下载依赖库jar包 Jackson的jar all下载地址: http://jackson.codehaus.org/1.7.6/jackson-all-1.7.6.jar 然后在工程中导入这个jar包即可开始工作 官方示例: http://wiki.fasterxml.com/JacksonInFiveMinutes 因为下面的程序是用junit测试用例运行的,所以还得添加junit的jar包。版本是junit-4.2.8 如果你需要转换xml,那么还需要stax2-api.jar 2、 测试类基本代码如下 package com.hoo.test; import java.io.IOException; import java.io.StringWriter; import java.util