try

Java finally语句到底是在return之前还是之后执行?

[亡魂溺海] 提交于 2020-01-31 05:42:23
网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过我试验, 至少有两种情况下finally语句是不会被执行的: (1)try语句没有被执行到,如在try语句之前就返回了,这样finally语句就不会执行,这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被执行到。 (2)在try块中有System.exit(0);这样的语句,System.exit(0);是终止Java虚拟机JVM的,连JVM都停止了,所有都结束了,当然finally语句也不会被执行到。 当然还有很多人探讨Finally语句的执行与return的关系,颇为让人迷惑,不知道finally语句是在try的return之前执行还是之后执行?我也是一头雾水,我觉得他们的说法都不正确,我觉得应该是: finally语句是在try的return语句执行之后,return返回之前执行 。这样的说法有点矛盾,也许是我表述不太清楚,下面我给出自己试验的一些结果和示例进行佐证,有什么问题欢迎大家提出来。 1. finally语句在try中的return语句执行之后return返回之前执行的。 例1.1: public class Main { public static void main

try{} catch()

青春壹個敷衍的年華 提交于 2020-01-31 02:09:49
try{} catch() 保证运行,跳过报错 try{}中不报错,不执行catch() try{}中报错,执行catch() Error.name的六种值 EvalError:eval()的使用与定义不一致 RangeError:数值越界 ReferenceError:非法或不能识别的引用数值 如:变量未经声明就使用 SyntaxError:发生语法解析错误 如:低级语法错误 TypeError:操作数类型错误 如:数组方法操作对象 URIError:URI处理函数使用不当 如:引用地址错误 来源: CSDN 作者: 黎犁泥栗 链接: https://blog.csdn.net/qq_43618136/article/details/104116481

.net中DBHelper(SqlServer版)

我与影子孤独终老i 提交于 2020-01-30 10:54:44
应用程序大多数都是需要与数据库交互做为支撑的,那么相对数据库的访问方式就相当重要了,最基础的是通过Ado的方式了;还有就是一些相对的ORM框架,如EF,Nhibernate等,后续加入; 相应的命名空间自己对应导入就可以 提供一个web.config中的连接串或app.config <connectionStrings> <!--Oracle 连接串--> <add name="oracleconn" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=ORCL)));User ID=scott;Password=tiger;Unicode=True" providerName="System.Data.OracleClient"/> <!--sqlserver 连接串--> <add name="ConstrSQL" connectionString="server=.\MSSQLSERVER1;database=数据库名;uid=sa;pwd=*****;Integrated Security=False;Persist Security Info=False;"

SQL SERVER C#数据库操作类

我们两清 提交于 2020-01-30 10:03:56
1 using System; 2 using System.Collections; 3 using System.Collections.Specialized; 4 using System.Data; 5 using System.Data.SqlClient; 6 using System.Configuration; 7 8 namespace SQLServerDAL // 可以修改成实际项目的命名空间名称 9 { 10 /**/ /**/ /**/ /// <summary> 11 /// Copyright (C) 2004-2008 LiTianPing 12 /// 数据访问基础类(基于SQLServer) 13 /// 用户可以修改满足自己项目的需要。 14 /// </summary> 15 public abstract class DbHelperSQL 16 { 17 // 数据库连接字符串(web.config来配置) 18 // <add key="ConnectionString" value="server=127.0.0.1;database=DATABASE;uid=sa;pwd=" /> 19 protected static string connectionString = ConfigurationSettings

C#使用ODP.NET(Oracle.ManagedDataAccess.dll)操作Oracle数据库

天涯浪子 提交于 2020-01-30 09:53:15
在刚接触C#的时候由于公司使用的就是Oracle数据库,那么C#怎么连接Oracle数据库就成了首要去掌握的知识点了。在那时没有ODP.NET,但visual studio却对Oralce数据库的调用进行了集成,就是下图中的这个,尽管现在使用这个的时候visual studio提醒过时的,但在那时却是非常好用的。 为什么现在visual studio中这个程序集依然能使用,有ODP.NET,单单要拿出Oracle.ManagedDataAccess.dll进行本文的重点呢? 1、visual studio中提醒过时,因为微软和甲骨文存在数据库的竞争关系,并且从.NET的更新来看这个程序集没有再更新过,对于数据库一直在更新而调用的程序集一直不更新敢用下去么?还有一个我认为非常重要的原因就是使用这个程序集,摆脱不了每一个运行程序的客户机上都要去安装Oracle客户端的事实,试想一下,如果用户数量巨大的时候,安装客户端的工作量就相当的大,很耗费资源; 2、甲骨文后来出了ODP.NET,各种资料以及官网上都说需要安装ODP.NET,然后引用Oracle.ManagedDataAccess.dll,他和visual studio中的程序集最大的区别在于会随着数据库更新,是oracle官方出的驱动; 3、其实经过测试,ODP.NET的安装完全是没有必要的,直接在网上下载一个Oracle

2020-01-29

拜拜、爱过 提交于 2020-01-30 07:31:46
自己的一些面试总结 线程 多线程 线程的创建方式 1.继承Thread类创建线程 2.实现Runnable接口创建线程 3.使用Callable和future创建线程 4.使用线程池例如用Executor框架 线程怎么启动 Thread.start();//开启线程 Thread.run();当普通方法的方式调用 线程的状态(就绪、运行、阻塞、结束) 1.新建状态:当用new操作符创建一个线程时,线程还没有开始运行,此时线程处在新建状态 2.就绪状态:一个新创建的线程并不自动开始运行,要执行线程,必须调用线程start()方法。当线程对象调用start()方法即启动了线程,start()方法创建线程运行的系统资源,并调度线程运行run()方法。当start()方法返回后,线程就处于就绪状态 3.运行状态 当线程获取cpu时间后,他才进入运行状态,真正开始执行run()方法 4,阻塞状态:线程运行过程中,肯峨眉号各种原因进入阻塞状态; sleep方法进入睡眠状态 线程在等待某个触发条件 线程的同步 同步就是发出一个功能调试时,在没有得到结果之前,该调用就不返回或继续执行后续操作。 异步与同步相对,当一个异步过程调用发出后,调用者在没有得到结果之前,就可以继续执行后续操作。 线程、进程的区别 线程和进程都是一个时间段的描述,是cpu工作时间段的描述。 进程的颗粒太大

Java 异常处理的 9 个最佳实践

淺唱寂寞╮ 提交于 2020-01-30 07:18:49
无论你是新手还是资深程序员,复习下异常处理的实践总是一件好事,因为这能确保你与你的团队在遇到问题时能够处理得了它。 在 Java 中处理异常并不是一件易事。新手觉得处理异常难以理解,甚至是资深开发者也会花上好几个小时来讨论是应该抛出抛异常还是处理异常。这就是为何大多数开发团队都拥有一套自己的异常处理规范。如果你初进团队,你也许会发现这些规范和你曾使用的规范大相径庭。 尽管如此,这里还是有一些被大多数团队所遵循的最佳实践准则。以下9个最重要的实践方法能帮助你开始进行异常处理,或提高你的异常处理水平。 1、在 Finally 中清理资源或使用 Try-With-Resource 语句 在实际开发中会经常遇到在 try 中使用资源的情况,比如一个 InputStream ,在使用后你需要关闭它。在这种情况下,一个常见的错误是 没有在 try 的尾部关闭资源 。 public void doNotCloseResourceInTry ( ) { FileInputStream inputStream = null ; try { File file = new File ( "./tmp.txt" ) ; inputStream = new FileInputStream ( file ) ; // use the inputStream to read a file // do NOT

14、python异常处理及断言

家住魔仙堡 提交于 2020-01-30 06:06:55
前言:本文主要介绍python中异常的处理及断言,包括异常类型、异常捕获、主动跑出异常和断言。 一、异常类型介绍   什么是异常?异常即是一个事件,该事件会在程序执行过程中发生,会影响程序的正常执行,一般情况下,在python无法正常处理程序时就会发生一个异常。 异常是python对象,表示一个错误。当python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。 在python 中,所有的异常都是派生自BaseException类的实例,下面介绍几种常见几种异常: BaseException : 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) GeneratorExit 生成器(generator)发生异常来通知退出 Exception 常规错误的基类( 重点掌握 ,一般因代码引起的错误,是我们可以控制的,其他异常基类我们了解即可) 常见的Exception类异常类型举例如下: AttributeError:属性错误,特性引用和赋值失败时会引发属性错误 NameError:试图访问的变量名不存在 SyntaxError:语法错误,代码形式错误 IOError:一般常见于打开不存在文件时会引发IOError错误,也可以解理为输出输入错误 KeyError:使用了映射中不存在的关键字(键)时引发的关键字错误

队列 LinkedBlockingQueue

放肆的年华 提交于 2020-01-30 04:31:29
1 api java.util.concurrent包下的新类。LinkedBlockingQueue就是其中之一,是一个阻塞的线程安全的队列,底层采用链表实现。 LinkedBlockingQueue构造的时候若没有指定大小,则默认大小为Integer.MAX_VALUE,当然也可以在构造函数的参数中指定大小。 LinkedBlockingQueue不接受null。 添加元素的方法有三个:add,put,offer, 且这三个元素都是向队列尾部添加元素的意思。 区别: add方法在添加元素的时候,若超出了度列的长度会直接抛出异常: public static void main(String args[]){ try { LinkedBlockingQueue<String> queue=new LinkedBlockingQueue(2); queue.add("hello"); queue.add("world"); queue.add("yes"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } //运行结果: java.lang.IllegalStateException: Queue full at java.util.AbstractQueue.add

异常

安稳与你 提交于 2020-01-30 01:57:36
异常的简单继承关系: Exception为强制执行的异常 :不执行会报错误,如IOException、ClassNotFoundException,不解决的话会报错误。 没有执行异常的情况 : 执行的情况: RuntimeException为非强制执行的异常 :可以不执行不会报错误,如ArrayIndexOutOfBoundsException、IndexOutOfBoundsException(数组下标越界),只有当出现情况后,没有写捕捉异常的代码,JVM会使用默认方式自动报错误,终止程序运行。 不写try…cacth也没事没有出现错误直接过,只有当出现错误时才会报出错误,终止程序: JVM对于异常的处理 :当可能为错误代码,没有被try{ }catch{ }包住的时候,JVM默认报出异常和位置,然后结束程序的运行,包了但错误内没有报的错误JVM也会采取默认的方法,所以一般在最后写父类Exception保证异常都会被拦截。 异常的写法 :在方法内使用try{ 可能出现错误的代码 }catch(异常类型 e){ }finally{ }。 final:只要在final内的代码不管try…catch内有没有错误都会执行,用于IO一般写关闭流数据。 自定义异常 :自定义异常继承Exception和RuntimeException,同时也会继承相应的特性,强制执行和非强制执行。 thows