异常分类、finally子句

异常层次结构简化示意图

派生于 RuntimeException 的异常包含下面几种情况:

•错误的类型转换。

•数组访问越界

•访问 null 指针

不是派生于 RuntimeException 的异常包括:

•试图在文件尾部后面读取数据。

•试图打开一个不存在的文件。

•试图根据给定的字符串查找 Class 对象, 而这个字符串表示的类并不存在,,

“ 如果出现 RuntimeException 异常, 那么就一定是你的问题” 是一条相当有道理的规则。

两个类之间调用:

public class Test {

	public static void main(String[] args) {
		
	  try {
		  m1();
		  //访问磁盘
		  //传输数据
		  //处理数据
		  
	  }catch(wyException e) {//捕获异常
		  
		  System.out.println("错误原因:"+e.getMessage());
		  System.out.println("错误原因:"+e.getMessage1());
		  System.out.println("错误原因:"+e.getMessage2());
	  }finally {
		  //关闭close
	  }
	  
	  
	}
	public static void m1 () throws wyException{
		throw new wyException("信息","信息2");
	}
 }

package com.weiyang;

public class wyException extends Exception{
    private String msg2;
    public wyException(String x,String y) {
    	super(x);
    	msg2=y;
    }
	public  wyException(String x) {
		super(x);
	}
	public  String getMessage1() {
		return msg2;
	}
	public  String getMessage2() {
		return msg2+super.getMessage();
	}

}

1、finally执行哪些操作?

Io操作关闭,in.close() 能保证百分之百关闭,一定会关闭,一定会执行,关闭之后减少内存消耗

2、final和finally:

finally 异常中总能执行的代码区,finally 肯定会执行 ,return也阻止不了

final 用于定义常量的关键字

finalize() 垃圾回收,该方法是系统调用,不用程序员手动调用

执行顺序简单的例子:

 下图中

return先执行,后执行finally

m2先执行 后finally 后return 最终终止

public static int m1 () {
		try {
			return m2();
		}catch(Exception e) {
			
		}finally {
			System.out.println("nice!");
		}
		
		System.out.println("hi!");
		return 1;
	}
	public static int m2 () {
		return 0;
		
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值