Java异常机制 学习笔记一

什么是异常?

  异常,不正常也。Exception是Exception event的缩写,因此异常是一个事件,该事件发生在程序运行时。

异常会影响程序的连续性,使程序中断。

  在Java中,一切皆对象,所以要定义异常,也需要使用对象。异常对象里封装了异常类型和程序发生异常时的状态。

  我们经常说的抛出异常就是创建异常对象,并提交给运行系统。

异常捕获机制

  当异常发生时,我们需要知道异常在哪里发生的,那么怎么定位异常的出处呢?

  在Java中,使用call stack来记录方法调用顺序。当Java程序发生异常时,会搜索call stack,希望找到特定的代码块

来处理它。就像生(Exception)了,我们会去医院找特定科目的医生就诊。以下图为例,main方法调用method0,

method0调用method1,等等。

  

  在Java中异常处理,使用try-catch语句。语法为:

try {
      // 可能出现异常的代码
} catch (ExceptionType name) {
     // 异常处理代码
} catch (ExceptionType name) {
     // 异常处理代码
}

结合上图我们实现一个异常处理示例程序:

        public static void main(String[] args) {
		method0();
	}

	static void method0(){                // 异常处理块
		try{
			method1();
		} catch(ArrayIndexOutOfBoundsException e){
			e.printStackTrace();
		} // 异常处理结束
	}

	static void method1(){
		method2();
	}

	static void method2(){                // 数组越界的情况
		int[] arr = new int[3];
		arr[3] = 6;
	}

  

时间: 2024-11-04 13:56:22

Java异常机制 学习笔记一的相关文章

Java反射机制学习笔记

Java反射机制 简介 通过反射API可以获取程序在运行时刻的内部结构.反射API中提供的动态代理可以原生实现AOP中的方法拦截功能.通过反射获取到的Java类内部结构后再进行运用,和直接运用这个类效果相同,但额外的提供了运行时刻的灵活性.反射的最大一个弊端是性能比较差.相同的操作,用反射API所需的时间大概比直接的使用要慢一两个数量级.可以考虑在适当的时机来使用反射API. 基本用法 Java反射机制主要有两个作用.第一个主要作用是获取程序再运行时刻的内部结构.只需要少量的代码就能便利出一个J

Thinking in Java---类型信息和java反射机制学习笔记

前面学习的多态给了我们一个很好的承诺:我们编写的代码只要与基类打交道,而不用为每一个新增加的子类写一份代码.但是这种思想在我们想要访问子类自己定义的方法时,就会有问题了.如下面的代码所示: class Base1{ void f(){ System.out.println("Base.f()"); } } class Sub extends Base1{ void f(){ System.out.println("Sub.f()"); } void g(){ Sys

java反射机制学习笔记及例子代码

Java 反射的API 反射中常常用的几个类如下所示: java.lang 包中: --Class 类:代表一个类 Java 中,无论生成某个类的多少个对象,这些对象都会对应同一个 Class 对象 Java.lang.reflect 包中: --Field 类:代表类的成员变量(类的属性) --Method 类:代表类的方法,一个方法对应一个 Method 对象 --Constructor 类:代表类的构造方法 --Array 类:提供动态创建数组,以及访问数组的元素的静态方法 利用反射机制调

java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessController的checkPerssiom方法,访问控制器AccessController的栈检查机制又遍历整个 PerssiomCollection来判断具体拥有什么权限一旦发现栈中一个权限不允许的时候抛出异常否则简单的返回,这个过程实际上比我的描述要复杂 得多,这里我只是简单的一句带过,因为这

JAVA的反射机制学习笔记(二)

上次写JAVA的反射机制学习笔记(一)的时候,还是7月22号,这些天就瞎忙活了,自己的步伐完全被打乱了~不能继续被动下去,得重新找到自己的节奏. 4.获取类的Constructor 通过反射机制得到某个类的构造器,然后调用该构造器创建该类的一个实例 Class<T>类提供了几个方法获取类的构造器. public Constructor<T> getConstructor(Class<?>... parameterTypes) 返回一个 Constructor 对象,它反

java/android 设计模式学习笔记(一)---单例模式

前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使用的时候也会有一些坑. PS:对技术感兴趣的同鞋加群544645972一起交流 设计模式总目录 java/android 设计模式学习笔记目录 特点 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式的使用很广泛,比如:线程池(threadpool).缓存(cache).对

Java多线程技术学习笔记(二)

目录: 线程间的通信示例 等待唤醒机制 等待唤醒机制的优化 线程间通信经典问题:多生产者多消费者问题 多生产多消费问题的解决 JDK1.5之后的新加锁方式 多生产多消费问题的新解决办法 sleep和wait的区别 停止线程的方式 守护线程 线程的其他知识点 一.线程间的通信示例 返目录回 多个线程在处理同一资源,任务却不同. 假设有一堆货物,有一辆车把这批货物往仓库里面运,另外一辆车把前一辆车运进仓库的货物往外面运.这里货物就是同一资源,但是两辆车的任务却不同,一个是往里运,一个是往外运. 下面

异常的学习笔记+打包+doc的包编译

jvm默认的异常处理机制就是调用printStackTrace方法 对于多异常的处理.应该是定义更具体的异常来捕捉捕捉问题 捕获异常代码块出现继承关系 应该把被继承的异常放在子类异常块的后面 throw 和 throws的区别 throw是是用在函数上,而throws是使用在函数内 throw后面跟的是异常对象,而throws跟的是异常类可以 多个 对异常的分类: 1.编译时被检测到的异常. (值得去处理的异常,或者是希望得到调用者处理,并不影响运算意向) 2.编译时不被检测到的异常(运行时异常

JAVA反射机制—学习总结

最近收到很多关于Java反射机制的问题留言,其实Java反射机制技术方面没有太多难点,或许是大家在学习过程中遗漏了细小知识点,导致一些问题无法彻底理解,现在我们简单的总结一下,加深印象. 什么是反射机制? "JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制."我们通过一些例子,更好理解反射机制.Class类 我们知道Java是一门面向对象