throws

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

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

Java 异常机制

匿名 (未验证) 提交于 2019-12-02 21:52:03
抄自: 详解Java中的异常 人非圣贤,孰能无过。程序也一样,特别是对于大程序而言,不出bug是不可能的,我们该关注的是出了错的程序该如何运行。 程序错误分为三种: 编译错误 编译错误是因为程序没有遵循语法规则,编译程序能够自己发现并且提示我们错误的原因和位置 运行时错误 运行时错误是程序在执行期间,运行环境发现了不能执行的操作 逻辑错误 逻辑错误是因为程序没有按照预期的逻辑顺序执行 异常也就是指程序运行时发生的错误 而异常机制是指当程序出现错误后,程序如何处理这个异常、控制这个流程的行为。 具体来说,异常机制提供了程序退出的安全通道,当发生错误时,程序执行流程发生改变,将控制权转移给异常处理器 在 Java 中,所有的异常都有一个共同的祖先 Throwable 。Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性。 Throwable 是Java中所有异常的共同祖先,异常机制的基类,它指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性。 它有两个重要的子类: Exception(异常) Error(错误) Error 是程序无法处理的错误,表示运行应用程序中较严重问题,大多数错误与代码编写者的操作无关,而是表示代码运行时JVM出现的问题。 比如:之前说过的当JVM没有足够的内存资源进行分配时

springAOP五个通知消息调用链的原理

匿名 (未验证) 提交于 2019-12-02 21:45:52
以下是以项目的的形式就行运行验证五个消息的运行顺序及调用链的原理,里面主要用到了递归调用。 本篇博客先给大家展示代码,后面进行文字及图片讲解执行的顺序 一、java springAOPModule 二、创建项目包结构如下: 三、UserService /** * 目标调用类 */ public class UserService { public void login(String userName,Integer age){ System.out.println("姓名为:"+userName+",年龄为:"+age); } }    四、MethodInvocation/DefaultMethodInvacation) 1、方法执行接口:MethodInvocation /** * 方法执行接口 */ public interface MethodInvocation { Object process() throws InvocationTargetException, IllegalAccessException; }    2、 DefaultMethodInvacation /** * 执行方法实现类 */ public class DefaultMethodInvacation implements MethodInvocation { //5个通知集合

Java--定时任务框架Quartz

半城伤御伤魂 提交于 2019-12-02 21:15:45
Quartz是一个定时任务执行框架。添加如下Maven依赖即可。 < dependency > < groupId > org.quartz-scheduler </ groupId > < artifactId > quartz </ artifactId > < version > 2.3.0 </ version > </ dependency > 创建任务 /** * 创建任务 * @throws SchedulerException */ public static void startSchedulerJob () throws SchedulerException { // 数据 Map<String, Object> dataMap = new HashMap<>(); dataMap.put( "a" , 1 ); dataMap.put( "b" , 2 ); JobDetail jobDetail = createJobDetail( "job1" , "group1" , dataMap); Trigger trigger = createTrigger( "trigger1" , "group3" , 3 ); Scheduler scheduler = createScheduler(); // 将任务及其触发器放入调度器 scheduler

Java基础入门 throws关键字

匿名 (未验证) 提交于 2019-12-02 20:37:20
在java程序书写中难免毁掉用别人创建的方法那么我们怎么知道其中是否有异常呢,这时候就可以使用 throws关键字进行标记 举例如下: public class Main{ public static void main(String[] args){ int c=divide(4,0); System.out.println(c); } private static int divide(int a,int b)throws Exception { return a/b; } } 在上例中,创建divide方法时使用throws关键字声明了此方法存在异常,若不进行处理将不能运行成功 处理办法如下: public class Main{ public static void main(String[] args){ try{ int c=divide(4,0); System.out.println(c); }catch(Exception e){ System.out.println("捕获的异常信息为――"+e.getMessage()); } } private static int divide(int a,int b)throws Exception { return a/b; } } 这样就可以运行成功! 文章来源: Java基础入门 throws关键字

Should I declare unchecked exceptions in the throws specification?

≯℡__Kan透↙ 提交于 2019-12-02 18:01:11
I'm aware checked exceptions have to be handled or specified, but unchecked exceptions are optional. If for some reason I can reasonably expect an unchecked exception to occur in a method, should I add it to the throws specification? Or should I keep the specification as short as possible? If for some reason I can reasonably expect an unchecked exception to occur in a method, should I add it to the throws specification? Since unchecked exceptions indicate programming errors , declaring them in the throws clause should be avoided. Generally, catching these exceptions should not be attempted,

Difference between Throws in method signature and Throw Statements in Java

元气小坏坏 提交于 2019-12-02 14:18:15
I am trying to make it clear of the difference between Throws in method signature and Throw Statements in Java. Throws in method signature is as following: public void aMethod() throws IOException{ FileReader f = new FileReader("notExist.txt"); } Throw Statements is as following: public void bMethod() { throw new IOException(); } From my understanding, a throws in method signature is a notification that the method may throw such an exception. throw statement is what actually throw a created object under according circumstances. In that sense, throws in method signature should always appear if

Zookeeper客户端java代码操作

谁说胖子不能爱 提交于 2019-12-02 13:02:18
Zookeeper客户端java代码操作 上篇博客记录了shell命令操作zookeeper集群的方式,这次尝试采用java代码来操作。通过查阅API,发现并不困难。 1. 首先获得客户端与服务器的连接 //zookeeper客户端 private ZooKeeper zkCli; //连接地址 private static final String CONNECT_STRING = "hadoop102:2181,hadoop103:2181,hadoop104:2181"; //session过期时间 private static final int SESSION_TIMEOUT = 2000; /** * 创建客户端实例对象 * * @throws IOException */ @Before public void before() throws IOException { zkCli = new ZooKeeper(CONNECT_STRING, SESSION_TIMEOUT, (event) -> { System.out.println("默认的回调函数"); }); } 2. 列出根节点下的子节点(非递归) @Test public void ls() throws KeeperException, InterruptedException { List

zookeeper在ubuntu上的安装配置及java操作

我们两清 提交于 2019-12-02 08:53:55
一、ubuntu上安装,配置,操作zookeeper 1.准备安装文件zookeeper-3.4.5.tar 2.上传安装文件到ubuntu,打开xshell,使用快捷键Ctrl+Alt+f打开文件上传窗口,将文件拖拽到ubuntu指定目录下 3.解压tar -zxvf zookeeper-3.4.5.tar.gz 4.cd都zookeeper-3.4.5/conf目录下,将zoo_sample.cfg复制一份,文件名为zoo.cfg 5.打开vi,编辑zoo.cfg文件,添加,保存 单个zookeeper配置:只需在上图加入红框中的内容即可 集群配置:要是多个虚拟机或者机器上都安装了zookeeper,则每个zookeeper配置文件都加入相同的配置即可, 如下:server.1=ubuntu1.2888:3888 server.2=ubuntu2.2888:3888 server.3=ubuntu3.2888:3888 bogon和ubuntu1,ubuntu2,ubuntu3是你虚拟机上ubuntu的主机名,其余固定配置,其中2888是zookeeper与其它机器上的zookeeper通信的端口,3888是zookeeper集群选举master的通信端口 6.启动,关闭zookeeper cd到zookeeper的安装目录下执行 1.bin/zkServer.sh start

Java高级特性--反射详解

不羁岁月 提交于 2019-12-02 05:39:52
本人博客: https://cherishlife.com.cn/blog/22 有兴趣的朋友支持下,谢谢! 概述 在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。 java.lang.Class类是进行反射操作的源头所在,所有的反射操作都是通过这个类展开的。 类的声明 public final class Class<T> extends Object implements Serializable, GenericDeclaration, Type, AnnotatedElement Class类不能有子类,并且在jdk1.5之后引入了泛型技术(泛型在反射之中是非常糟糕的)。 这个类从jdk1.0开始提供的,这个类中的构造方法并不能被直接使用,而要想取得反射类的实例化对象,在Java里提供有三种类型: 1. 利用Object类之中的getClass()方法 方法:public final Class<?> getClass(),表示所有类的实例化对象都可以调用此方法。 Date date = new Date(); Class<?> cls = date.getClass(); System.out.println(cls); 在任何的开发中