try

try catch finally 顺序执行

别说谁变了你拦得住时间么 提交于 2019-12-10 09:37:30
结论: 1、不管有木有出现异常,finally块中代码都会执行; 2、当try和catch中有return时,finally仍然会执行; 3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的; 4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。 举例: 情况1 :try{} catch(){}finally{} return; 显然程序按顺序执行。 情况2 :try{ return; }catch(){} finally{} return; 程序执行try块中return之前(包括return语句中的表达式运算)代码; 再执行finally块,最后执行try中return; finally块之后的语句return,因为程序在try中已经return所以不再执行。 情况3 :try{ } catch(){return;} finally{} return; 程序先执行try,如果遇到异常执行catch块, 有异常:则执行catch中return之前(包括return语句中的表达式运算)代码,再执行finally语句中全部代码,

HierarchyViewer

会有一股神秘感。 提交于 2019-12-10 08:40:55
/* Copyright (C) 2011 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software这里输入代码 distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package com.android

【多线程07】生产者消费者(Lock锁对等待唤醒机制和同步的改进)

主宰稳场 提交于 2019-12-10 07:57:08
1.提出问题 在上个博客中,使用等待唤醒机制,可以达到一进一出的效果,可是实际的开发中,不止两个线程,一般都会多个线程,那么此时会出现什么问题??? class Resource { private String name ; private int count = 1 ; private boolean flag = false ; public synchronized void set ( String name ) { if ( flag ) { try { wait ( ) ; } catch ( InterruptedException e ) { e . printStackTrace ( ) ; } } this . name = name + "......" + count ++ ; System . out . println ( Thread . currentThread ( ) . getName ( ) + "生产者...." + this . name ) ; flag = true ; notify ( ) ; } public synchronized void out ( ) { if ( ! flag ) { try { wait ( ) ; } catch ( InterruptedException e ) { e .

文件 流转

為{幸葍}努か 提交于 2019-12-10 07:50:25
连接数据库 import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import org.apache.catalina.User; import com.official.bean.Doc; import com.official.bean.Permission; import com.official.bean.Users; public class DBUtil { //数据库URL和账号密码 private static final String connectionURL="jdbc:mysql://127.0.0.1:3306/doc-system?useUnicode=true&characterEncoding=GB18030&useSSL=false&serverTimezone=GMT&allowPublicKeyRetrieval=true"; private static final String username="root"; private static

java基础之异常 · fossi

冷暖自知 提交于 2019-12-10 01:10:26
在开发中,异常处理是一个不可绕开的话题,我们对于异常的处理已经非常熟练了,对于异常本身的概念、用法等不再赘述了,直接结合面试问题来加深对异常的理解吧。 Throwable 可以用来表示任何可以作为异常抛出的类,分为两种: Error 和 Exception 。 1. 什么是Java异常 异常是发生在进程执行过程中阻碍进程正常执行的错误事件。比如:用户输入错误数据、硬件故障、网络阻塞等都会导致出现异常。 只要在Java语句执行中产生了异常, 一个异常对象就会被创建 ,JRE就会试图寻找异常处理进程来处理异常。如果有合适的异常处理进程,异常对象就会被异常处理进程接管,否则,将引发运行环境异常,JRE终止进程执行。 Java异常处理框架只能处理运行时错误,编译错误不在其考虑范围之内。 2. Error和Exception的区别 Error:是进程无法处理的错误,表示运行应用进程中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM出现的问题。 例如,Java虚拟机运行错误,当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError 。这些异常发生时,Java虚拟机一般会选择线程终止。 3. Java异常处理中有哪些关键字? throw :有时我们需要显式地创建并抛出异常对象来终止进程的正常执行。 throw

Java7的新特性1-project coin

好久不见. 提交于 2019-12-10 00:35:36
Project coin project coin 是 Java 一些语法改进的一个项目。 Strings in switch 在 Java1.7 之前, switch 语句只能是 byte 、 char 、 short 和 int 以及包装类和枚举常量,比如: enum Days { MONDAY ( "1" ), Tuesday ( "2" ); private String value ; private Days(String value) { this . value = value; } public String getValue() { return value ; } } ... Days day = Days. MONDAY ; switch (day) { case MONDAY : System. out .println( "1" ); break ; case Tuesday : System. out .println( "2" ); break ; default : System. out .println( "3" ); break ; } 在 Java7 中,扩展了允许 String 类型,比如 : public static void printDay(String dayOfWeek) { switch (dayOfWeek) { case

HBase(2) Java 操作 HBase 教程

别等时光非礼了梦想. 提交于 2019-12-09 23:20:58
目录 一、简介 二、hbase-client 引入 三、连接操作 四、表操作 五、运行测试 FAQ 参考文档 一、简介 在上一篇文章 HBase 基础入门 中,我们已经介绍了 HBase 的一些基本概念,以及如何安装使用的方法。 那么,作为一名 Javaer,自然是希望用 Java 的方式来与 HBase 进行对话了。 所幸的是,HBase 本身就是用 Java 编写的,天生自带了 Java 原生API。 我们可以通过 hbase-client 来实现 HBase 数据库的操作。 所以,这次主要介绍该组件的基本用法。 在使用 hbase-client 之前,有几个要点需要注意: 客户端需要能访问 Zoopkeeper,再获得 HMaster、RegionServer 实例进行操作 客户端需运行在HBase/Hadoop 集群内,HBase会使用 hostname 来定位节点,因此要求客户端能访问到对应的主机名(或子域名) 如果是远程客户端则需要配置本地的hosts文件。 下面这个图,有助于理解 Client 与 HBase 集群的交互架构: 下面开始介绍 client 的使用。 二、hbase-client 引入 在 Maven 的 pom.xml 中添加依赖: <dependency> <groupId>org.apache.hbase</groupId> <artifactId

公文流转2

家住魔仙堡 提交于 2019-12-09 23:19:45
公文流转2 2、公文实体: package com.me.domain; public class Doc { private int id; private int status; private int deletestatus; private String title; private String current; private String owner; private String content; private String time; private String firstcheck; private String secondcheck; public String getFirstcheck() { return firstcheck; } public void setFirstcheck(String firstcheck) { this.firstcheck = firstcheck; } public String getSecondcheck() { return secondcheck; } public void setSecondcheck(String secondcheck) { this.secondcheck = secondcheck; } public int getId() { return id; } public

jdbc 查询语句

杀马特。学长 韩版系。学妹 提交于 2019-12-09 22:57:05
/** * jdbc 查询语句 Student类省略 */ import Day01 . Text03 . Student ; import java . sql . * ; public class Deom { public static void main ( String [ ] args ) { Connection conn = null ; Statement statement = null ; ResultSet resultSet = null ; try { /** * 注册驱动 */ Class . forName ( "com.mysql.jdbc.Driver" ) ; /** * 获得数据库连接对象 */ conn = DriverManager . getConnection ( "jdbc:mysql:///my_db" , "root" , "hao" ) ; /** * 获取执行sql对象 */ statement = conn . createStatement ( ) ; /** * 定义sql */ String sql = "select * from student" ; /** * 执行sql,并返回结果集 */ resultSet = statement . executeQuery ( sql ) ; /** * 处理结果 */

C++中的异常处理(上)

荒凉一梦 提交于 2019-12-09 22:08:15
C++内置了异常处理的语法元素try... catch ... -t ry语句处理正常代码逻辑 - catch语句处理异常情况 -try语句中的异常由对应的catch语句处理 try {   double r = divide(1,0); } catch(...) {   cout << "Divided by zero..." << endl; } C++通过throw语句抛出异常信息 double divide(double a, double b) { const double delta = 0.000000000000001; double ret = 0; if( !((-delta < b) && (b < delta)) ) { ret = a / b; } else { throw 0; //产生除0异常 } return ret; } C++异常处理分析 -throw抛出的异常 必须被catch处理    当前函数能够处理异常,程序继续往下执行    当前函数无法处理异常,则函数停止执行,并返回 未被处理的异常会顺着函数调用栈向上传播,直到被处理为止,否则程序将停止执行 当产生异常后,先看function3这个函数有没有能力处理,此时是没有能力处理的。于是function3这个函数就会立即停止执行,并且带着 异常返回function2的调用点