try

Python-基础-异常(二十七)

别等时光非礼了梦想. 提交于 2020-03-06 05:23:04
1. 异常的概念 程序在运行时, 如果 Python 解释器 遇到 一个错误, 会停止程序的执行, 并且提示一些错误信息, 这就是 异常 程序停止执行并且提示错误信息 这个动作, 我们通常称之为 : 抛出 (raise) 异常 程序开发时, 很难将 所有的特殊情况 都处理的面面俱到, 通过 异常捕获 可以针对突发事件做几种的处理, 从而保证程序的 稳定性和健壮性 2. 捕获异常 2.1 简单的捕获异常语法 在程序开发中, 如果 对某些代码的执行不能确定是否正确, 可以增加 try(尝试) 来 捕获异常 捕获异常最简单的语法格式: try: 尝试执行的代码 except: 出现错误的处理 try 尝试 , 下方编写要尝试代码, 不确定是否能够正常执行的代码 except 如果不是 , 下方编写尝试失败的代码 简单异常捕获演练 ---- 要求用户输入整数 try: # 不能确定正确执行的代码 num = int ( input ( "请输入一个整数: " ) ) except: # 错误代码的处理 print ( "请输入正确的整数" ) 2.2 错误类型捕获 在程序执行时, 可能会遇到 不用类型的异常, 并且需要 针对不同类型的异常, 做出不同的响应 , 这个时候, 就 需要捕获错误类型 了 语法如下: try: # 尝试执行的代码 pass except 错误类型 1 : #

异常

时间秒杀一切 提交于 2020-03-05 23:09:51
异常概述与异常体系结构 异常:在Java语言中,将程序执行中发生的不正常情况称为“异常”。 (开发过程中的语法错误和逻辑错误不是异常) Java程序在执行过程中所发生的异常事件可分为两类: Error:Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源 耗尽等严重情况。比如:StackOverflowError和OOM。一般不编写针对性 的代码进行处理。 Exception: 其它因编程错误或偶然的外在因素导致的一般性问题,可以使 用针对性的代码进行处理。例如: 空指针访问 试图读取不存在的文件 网络连接中断 数组角标越界 对于这些错误,一般有两种解决方法:一是遇到错误就终止程序 的运行。另一种方法是由程序员在编写程序时,就考虑到错误的 检测、错误消息的提示,以及错误的处理。 捕获错误最理想的是在编译期间,但有的错误只有在运行时才会发生。 比如:除数为0,数组下标越界等。 分类:编译时异常和运行时异常 运行时异常 是指编译器不要求强制处置的异常。一般是指编程时的逻辑错误,是程序 员应该积极避免其出现的异常。java.lang.RuntimeException类及它的子 类都是运行时异常 对于这类异常,可以不作处理,因为这类异常很普遍,若全处理可能会对 程序的可读性和运行效率产生影响。 编译时异常 是指编译器要求必须处置的异常。即程序在运行时由于外界因素造成的一 般性异常

测试未用synchronized修饰的方法对已加锁的对象的操作能否成功

倖福魔咒の 提交于 2020-03-05 18:40:11
public class TestSync implements Runnable{ int num = 100; public static void main(String[] args){ TestSync syn = new TestSync(); Thread t = new Thread(syn); t.start(); try{ Thread.sleep(1000); } catch(InterruptedException e){ e.printStackTrace(); } syn.num = 500; System.out.println(syn.num); } public synchronized void run(){ num = 10000; try{ Thread.sleep(5000); } catch(InterruptedException e){ e.printStackTrace(); } System.out.println("num:" + num); } } 来源: https://www.cnblogs.com/yxfyg/p/12421692.html

事物、源码学习,spring-tx

邮差的信 提交于 2020-03-05 18:37:59
标签式配置,主要是标明回滚方法,超时,是否只读,以及隔离级别(不同session间事物的可见性,读取未提交,读取已提交,可重复读,序列化)及传播属性(定义了调用关系的事物传播行为 PROPAGATION_REQUIRED 支持当前事务,如果不存在 就新建一个(默认);PROPAGATION_SUPPORTS 支持当前事务,如果不存在,就不使用事务;PROPAGATION_MANDATORY 支持当前事务,如果不存在,抛出异常;PROPAGATION_REQUIRES_NEW 如果有事务存在,挂起当前事务,创建一个新的事务;PROPAGATION_NOT_SUPPORTED 以非事务方式运行,如果有事务存在,挂起当前事务;PROPAGATION_NEVER 以非事务方式运行,如果有事务存在,抛出异常;PROPAGATION_NESTED 如果当前事务存在,则嵌套事务执行) 具体实现 TransactionAspectSupport,基本原理就是读各种配置,加载对应的事物管理器,根据事物标签,处理各种传递、可见性、执行、回滚、异常等情况;事物间传递用TransactionInfo对象保留现场 protected Object invokeWithinTransaction(Method method, Class<?> targetClass, final

spring源码解析之IOC容器(三)——依赖注入

帅比萌擦擦* 提交于 2020-03-05 17:46:20
  上一篇主要是跟踪了IOC容器对bean标签进行解析之后存入Map中的过程,这些bean只是以BeanDefinition为载体单纯的存储起来了,并没有转换成一个个的对象,今天继续进行跟踪,看一看IOC容器是怎样实例化对象的。   我们都使用过以下代码: 1 FileSystemXmlApplicationContext context=new FileSystemXmlApplicationContext("bean.xml"); 2 User user=context.getBean("user",User.class);   这样我们就能获取到user对象了,所以,不难想象,这个getBean方法就是实例化对象的入口。接下来我们就以这个方法为切入点,来探究IOC容器中bean的实例化过程。getBean方法是在FileSystemXmlApplicationContext的基类AbstractApplicationContext中定义的,代码如下: 1 public <T> T getBean(String name, Class<T> requiredType) throws BeansException { 2 assertBeanFactoryActive(); 3 return getBeanFactory().getBean(name, requiredType)

Java并发包--ArrayBlockingQueue

寵の児 提交于 2020-03-05 15:21:38
转载请注明出处: http://www.cnblogs.com/skywang12345/p/3498652.html ArrayBlockingQueue介绍 ArrayBlockingQueue是数组实现的线程安全的有界的阻塞队列。 线程安全是指,ArrayBlockingQueue内部通过“互斥锁”保护竞争资源,实现了多线程对竞争资源的互斥访问。而有界,则是指ArrayBlockingQueue对应的数组是有界限的。 阻塞队列,是指多线程访问竞争资源时,当竞争资源已被某线程获取时,其它要获取该资源的线程需要阻塞等待;而且,ArrayBlockingQueue是按 FIFO(先进先出)原则对元素进行排序,元素都是从尾部插入到队列,从头部开始返回。 注意:ArrayBlockingQueue不同于ConcurrentLinkedQueue,ArrayBlockingQueue是数组实现的,并且是有界限的;而ConcurrentLinkedQueue是链表实现的,是无界限的。 ArrayBlockingQueue原理和数据结构 ArrayBlockingQueue的数据结构,如下图所示: 说明 : 1. ArrayBlockingQueue继承于AbstractQueue,并且它实现了BlockingQueue接口。 2. ArrayBlockingQueue内部是通过Object

JAVA微信支付

走远了吗. 提交于 2020-03-05 14:58:06
1,简单说明   现在好多项目上都需要用到微信支付接口,官方文档上也是简单的描述了下,技术不高深的真的难以理解(我自己看官方文档就看不懂),还是需要自己收集,总结, 网上看了好多 有些照着弄最后还是没法成功。接下来我分享下自己的微信支付。这个微信支付的微信公众号或者小程序,都是需要微信认证的,不然无法申请微信支付,这个就不说了 ,既然到了这一步,相信所有的前提都已经准备好了。直接上代码吧~ 2,java微信支付 一,首先了解下各个参数的意义   https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1 这个是微信官方的说明 截取部分,详细的请到这个链接查看。 二,微信支付代码 首先创建service层插入如下代码: public interface WeiXinPayService { Object WeiXinPay(String outTradeNo,String openid, String body, int total_fee) throws UnsupportedEncodingException; } @Service public class WeiXinPayServiceImpl implements WeiXinPayService { private static final

如何使用JSP+MySQL创建留言本

感情迁移 提交于 2020-03-05 07:14:23
如何使用JSP+MySQL创建留言本 作者:unknown 更新时间: 2005-03-17 说明:用JSP+MySQL数据库创建留言本,首先要创建MySQL数据库,关于MySQL的使用请到 http://pinghui.51.net/download/012mysql.chm 下载教程。现在为了说明的需要,我们假设数据库已经建立完成,数据库的名称是pinghui,其中有comment表是记录留言信息的。 数据库的结构为: +-----------+-------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------------------+----------------+ | userid | int(11) | | PRI | 0 | auto_increment | | username | char(20) | | | | | | sex | char(2) | | | | | | address | char(40) | YES | | NULL | | | ip | char(15) | | | | | |

C# 增删改查应用集结

被刻印的时光 ゝ 提交于 2020-03-05 06:33:25
ADO.NET技术,该技术用于.net程序操作数据库 ADO的组成: 1.数据提供程序 a.Connection:连接对象,用于指定数据库服务器的相关信息(数据库服务名 数据库用户名 密码等) b.Command:命令对象,用于对数据库执行增删改查的操作,会提供对应的操作方法 2.数据集 对数据库的操作: 1.导名称空间System.Data.SqlClient (用于连接Sql server数据库) 2.创建连接对象 //连接字符串的格式: server=数据库服务名;database=数据库;uid=用户名;pwd=密码 String conStr = "server=192.168.0.102;database=MySchool3;uid=sa;pwd=sa"; SqlConnection cn = new SqlConnection(conStr); 3.打开连接 cn.open(); 4.创建命令对象 String sql = "delete student where studentId="+this.textBox1.Text; SqlCommand cmd = new SqlCommand(sql,con); 5.执行命令对象 int count=cmd.ExecuteNonQuery();//该方法的返回值:sql语句执行后 受影响的行数

sofa-bolt源码阅读(3)-通信模型

对着背影说爱祢 提交于 2020-03-05 03:44:49
Bolt提供了四种通信模型,分别是 Oneway , Sync , Future , Callback asynchronous 4.1 Oneway oneway单向通话 特点 不关心返回值 发送请求就立即返回 com.alipay.remoting.BaseRemoting#oneway protected void oneway(final Connection conn, final RemotingCommand request) { try { conn.getChannel().writeAndFlush(request).addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture f) throws Exception { if (!f.isSuccess()) { logger.error("Invoke send failed. The address is {}", RemotingUtil.parseRemoteAddress(conn.getChannel()), f.cause()); } } }); } catch (Exception e) { if (null == conn) { logger.error("Conn