throws

@Throws has no effect when the target is a property

我只是一个虾纸丫 提交于 2021-02-08 23:45:45
问题 While taking a look at this question, I noticed that applying @Throws to a get or set use-site has no effect. Additionally, the only valid targets for @Throws are AnnotationTarget.FUNCTION , AnnotationTarget.PROPERTY_GETTER , AnnotationTarget.PROPERTY_SETTER , and AnnotationTarget.CONSTRUCTOR . Other annotations, such as the JPA annotations and Deprecated work fine and are properly applied to the method! This is strange behavior. To demonstrate, I created a simple abstract class in Java, with

@Throws has no effect when the target is a property

你离开我真会死。 提交于 2021-02-08 23:44:10
问题 While taking a look at this question, I noticed that applying @Throws to a get or set use-site has no effect. Additionally, the only valid targets for @Throws are AnnotationTarget.FUNCTION , AnnotationTarget.PROPERTY_GETTER , AnnotationTarget.PROPERTY_SETTER , and AnnotationTarget.CONSTRUCTOR . Other annotations, such as the JPA annotations and Deprecated work fine and are properly applied to the method! This is strange behavior. To demonstrate, I created a simple abstract class in Java, with

Collection 接口

十年热恋 提交于 2020-04-06 03:57:09
Collection 是java 集合层次结构的根接口,包含了List 和 Set 的所有通用方法并且给出了说明,了解一下有助于理解具体集合实现类的相关方法的实现细节。在此先列出jdk1.8 之前的方法: /** * 集合层次结构中的根接口。集合表示一组对象,这些对象在集合中称为“元素” * 一些集合允许重复的元素,而另一些则不允许。 一些是有序的,而其他则是无序的。 * JDK没有提供此接口的任何直接实现:它提供了更具体的子接口的实现,例如Set 和 List。 * 该接口通常用于传递集合并在需要最大通用性的地方操作它们。 */ public interface Collection< E > extends Iterable< E > {// Iterable< E >是 迭代器接口 // Query Operations 查询操作 /** * 返回此集合中的元素个数。 * 如果大于 Integer.MAX_VALUE 就返回 Integer.MAX_VALUE */ int size () ; /** * 如果此集合不包含任何元素就返回 true */ boolean isEmpty () ; /** * 如果此集合包含指定的元素就返回 true * 通常,当且仅当至少包含一个元素 e 满足 (o==null ? e==null : o.equals(e)) 返回 true

Java中异常关键字throw和throws使用方式的理解

假装没事ソ 提交于 2020-04-03 04:10:08
Java中应用程序在非正常的情况下停止运行主要包含两种方式: Error 和 Exception ,像我们熟知的 OutOfMemoryError 和 IndexOutOfBoundsException 等。在日常的开发过程中 Error 我们是不用处理的,一旦 Error 发生必然证明应用程序代码上出现了问题,这个时候我们只能是修改代码。而 Exception 则是在程序运行的过程中可以进行捕获并处理的。接下来的所有讨论均会以 Exception 为主。 异常的继承图 所有的异常均继承在 Exception 类,而在其子类中又分为运行时异常RuntimeException 和 其他的异常类。所谓的运行时异常指的是在运行的时候所抛出的异常,例如:IndexOutOfBoundsException 就是 RuntimeException 的子类,访问数组下标范围外的元素,在代码的编译时期是无法被检测到的,只有在运行的时候才会抛出这样的异常。其他的异常则是 Exception 的直接子类,这些异常也可以称为编译时异常,编译时异常虽然是运行时被抛出的,但是在代码编写的过程中就会知道某些代码可能会抛出异常,并需要对其作出反应:处理或者是继续向上一层调用栈抛出。他们的主要区别可以用一句话来总结:编译时期可以发现并且需要对其作出反应的异常为编译时异常,在编译时期不能发现的异常叫运行时异常

JavaSE学习总结第21天_IO流3

泄露秘密 提交于 2020-04-02 20:26:10
21.01 转换流出现的原因及格式 由于字节流操作中文不是特别方便,所以,java就提供了转换流。 字符流 = 字节流 + 编码表 21.02 编码表概述和常见编码表 编码表:计算机只能识别二进制数据,早期又来是电信号,为了方便应用计算机,让它可以识别各个国家的文字,就将各个国家的文字用数字来表示,并一一对应,形成一张表,就是编码表。 简单的说编码表就是由字符及其对应的数值组成的一张表。 常见的编码表: ASCII:美国标准信息交换码,用1个字节的7位可以表示 ISO8859-1:拉丁码表,欧洲码表,用1个字节的8位表示 GBK2312:中国的中文编码表 GBK:中国的中文编码表升级,融合了更多的中文文字符号 GB18030:GBK的取代版本 BIG-5码 :通行于台湾、香港地区的一个繁体字编码方案,俗称“大五码” Unicode:国际标准码,融合了多种文字,所有的文字都用2个字节表示,Java中使用的就是Unicode码表 UTF-8:最多用3个字节来表示一个字符(能用一个字节表示的就用一个字节,一个表示不了就用两个,最多用三个字节) 21.03 String类中的编码和解码问题 1.public String(byte[] bytes, String charsetName)throws UnsupportedEncodingException 通过使用指定的 charset

Java异常机制

微笑、不失礼 提交于 2020-03-25 08:31:36
Java异常分类 异常表明程序运行发生了意外,导致正常流程发生错误,例如数学上的除0,打开一个文件但此文件实际不存在,用户输入非法的参数等。在C语言中我们处理这类事件一般是将其与代码正常的流程放在一起,通过判断条件让程序作出相应的操作,例如添加提示信息然后让程序返回一个错误码。在Java中引入了异常处理,可以帮助我们将程序的正常流程和错误处理分开。Java中所有的异常都继承自java.lang.Exception类。Throwable类又包含两个直接的子类,分别为Error和Exception,从这两个子类又分别生出一些新的异常类,如图所示: Exception是从任何Java类库的方法(包括标准类库的方法和自己定义的类方法)以及运行时抛出异常的基类。它可以分为运行时异常(RuntimeException)和检查异常(Checked Exception)两种。对于检查异常Java编译器会检查它,编译器要求必须捕获(使用try-catch)或声明抛出这种异常(使用throws语句声明抛出),除了RuntimeException外的其他异常均为检查异常。对于RuntimeException在默认情况下会自动处理,例如除0操作,访问非法的数组下标等,所以一般不用捕获RuntimeException,但是如果是自己定义的异常则需要抛出。 Error表示程序中出现了严重的问题

java7 异常处理增强

做~自己de王妃 提交于 2020-03-23 22:44:43
在Java 7发行版中,oracle在异常处理机制上也做了一些不错的更改。这些主要是 改进的catch块 和 多余的throws子句 。让我们看看他们是如何改变的。 1.改进了Java 7中的catch块 在此功能中,现在您可以 在单个catch块中捕获多个异常 。在Java 7之前,您只能在每个catch块中仅捕获一个异常。 要指定期望的例外列表,使用竖线('|')字符。 Java程序可在单个catch块中捕获多个异常。 try { //Do some processing which throws NullPointerException; throw new NullPointerException(); } //You can catch multiple exception added after 'pipe' character catch( NullPointerException npe | IndexOutOfBoundsException iobe ) { throw ex; } 如果一个 catch 块处理一个以上的异常类型,则该** catch 参数是隐式的 final **。在此示例中, catch 参数 ex 为 final ,因此您不能在 catch 块内为其分配任何值。 2. Java 7中的冗余抛出子句

java 自定义异常

[亡魂溺海] 提交于 2020-03-19 19:35:25
因为项目中会出现特有的问题,而这些问题并未被java所描述并进行封装对象,所以对于这些特有的问题可以按照java的问题封装的思想,将特有的问题进行自定义的异常封装,进行自定义异常。 当在函数内部出现了throw抛出异常对象,那么就必须要给对应的处理动作:    要么在内部try catch处理    要么在函数上声明让调用者处理 一般情况下,函数内有异常,函数上需要声明。 自定义异常信息:   父类中已经把异常信息的操作都完成了,所以子类只要在构造时,把异常信息传递给父类通过super语句。   那么就可以直接通过getMessage()方法获取自定义的异常。 继承Exception原因:   异常体系有一个特点:因为异常类和异常对象都可抛,他们都具备可抛性,这个可抛性是Throwable这个体系中的特点。   只有这个体系中的类和对象才可以被throws和throw操作。 throw和throws区别:   throws使用在函数上 后面异常类多个逗号隔开   throw使用在函数内 后面跟异常对象 来源: https://www.cnblogs.com/hongxiao2020/p/12526425.html

装饰者模式-自定义连接池

廉价感情. 提交于 2020-03-17 12:26:29
装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例 为什么要有连接池 数据库的连接对象创建工作,比较消耗性能。 如何创建简单的连接池 在内存中开辟一块空间(集合),一开先往池子里面放置 多个连接对象。 后面需要连接的话,直接从池子里面取。不要去自己创建连接了。 使用完毕, 要记得归还连接。确保连接对象能循环利用。 代码实现自定义连接池 import java.io.PrintWriter; import java.sql.Connection; import java.sql.SQLException; import java.sql.SQLFeatureNotSupportedException; import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; import javax.sql.DataSource; /** * 这是一个数据库连接池 * 一开始先往池子里面放10个连接 * * 1. 开始创建10个连接。 * * 2. 来的程序通过getConnection获取连接 * * 3. 用完之后,使用addBack 归还连接。 * * 4. 扩容。 * * * 问题: * * 1.

commons-dbutils使用介绍,commons-dbutils是JDBC的替代品

南笙酒味 提交于 2020-03-15 15:50:32
commons-dbutils 是Apache开源组织提供的用于操作数据库的工具包。今天为大家介绍一下该包的常用方法。 对于数据库的操作无外乎增删改查,而增删改本质上可以归为一类,操作方式相同,只是SQL语法不同而已,所以我将以修改和查询两类来介绍 commons-dbutils 的用法。 首先我们来创建一个测试类,使用JUnit进行测试。 import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import org.apache.commons.dbutils.DbUtils; import org.apache.commons.dbutils.QueryRunner; import org.junit.After; import org.junit.Before; import org.junit.Test; public class DBUtilsTest { private Connection conn = null; @Before public void initConnection() throws SQLException, ClassNotFoundException { printCurrentMethodName(); Class