从零双排java之异常

                           从零双排java之异常

Throwable(所有异常的父类)

 * 异常的分类

 * 1.运行时异常(程序员犯得错误 代码写错了  比如说越界)

 * 2.编译时异常(除了运行时异常  全是编译时异常)

 *  为你可能发生的异常 进行一个准备

 * 特点:系统强制你去处理这个异常 不处理就报错


出现异常时有两种处理方式:

1.自己处理

* 如何处理异常  

 * try.....catch....finally

 * try 指的是 要被测试的代码(有可能出现异常的代码)

 * catch  指的是  要捕获的异常

 * finally 指的是 异常处理的要执行的代码

 * 

 * 多catch处理异常

 * 由上至下进行匹配 匹配上一个剩下的catch都不走了

 * 捕获时 使用的类有小到大 书写

 

代码示例:
TestException testException = new TestException();
		try {
			//放可能要发生异常的代码
			//返回ArithmeticException对象
			int num = testException.fun(10, 0);
			System.out.println(num);
		}catch (ArithmeticException e) {
			//TestException testException = new TestException();
			///捕获异常对象(匹配这个异常对象)
			//如果捕获成功  会执行catch中的代码
			//程序不会被终止
			System.out.println("你除了零");
		}catch(IndexOutOfBoundsException e) {
			System.out.println("数组越界了");
		}catch(Exception e) {
			System.out.println("Exception异常");
		}
		System.out.println("你猜我执行了吗?");

* finally(遗言)

 * finally中的代码一定会被执行

 * finally一般关闭资源  关闭数据库  关闭流

 * finally  final finalize  之间的区别

 * 三者之前没有关系

 * final 修饰类  方法  变量

 * finally 异常处理中的关键字  可以关闭资源  一定会被执行

 * finalize是object 类中的方法是 用来垃圾回收的   

 * 可以将内存中没有任何引用的垃圾空间回收 并且是系统调用

 */

try {
			int num = 10 /2;
			return;
		} catch (ArithmeticException e) {
			System.out.println("你除了零");
		}finally {
			System.out.println("我是finally中的语句");
		}

2.向上级抛出

当一个方法中出现异常时,可以向上级抛出这个异常.谁调用了这个方法就由谁来处理.

当异常在main函数中被抛出时:将由Jvm虚拟机来处理

 * JVM默认处理异常方式

 * 1.打印错误所在的位置  

 * 2.打印错误信息  /by zero

 * 3.停止你的程序


继承中的异常

class Father{
	//如果父类抛出了异常  子类也可以抛出异常 也可以try\--catch处理
	public void fun() {		
	}
}
class Son extends Father{
	//重写父类的方法
	@Override
	public void fun(){
		//调用带异常的方法  能不能把异常抛出去处理
		//这时只能用try--catch处理
		try {
			//当父类中的方法没有抛出异常  那么子类在重写父类的这个方法的时候也不能抛出异常
			method();
		} catch (Exception e) {			
		}	
	}
	//抛出异常的方法
	public void method() throws Exception{
		throw new Exception();
	}
}












  

猜你喜欢

转载自blog.csdn.net/jsymax/article/details/80499342