Java异常学习笔记

 我们不做异常处理,JVM会做出默认异常处理,异常名称,原因,位置输出在控制台,并结束程序。
 try…catch…final
         注意:try里面越少越好
           catch里面必须有内容
           变形:try…finally 这样不进行异常处理,只释放内存。
 多个异常处理:一旦try里面的语句出了问题,就把问题抛出,和catch里面的问题进行匹配,结束try,执行后续语句。
      1》能明确的尽量明确。
      2》平级谁前谁后无所谓,父子关系,父在后
JDK7
      try{
      111111
      }catch(异常类1|异常类2 e){
            pppp}
            1》处理方式是一致的
            2》多个异常之间是同级关系
在try里面发现问题后,JVM会帮我们生成一个异常对象,然后把这个对象抛出,和catch里面匹配,如果该对象是某个类型的,就会执行该catch里面的处理信息。

异常中用到的几个方法:public String getMessage()异常的消息字符串
               public String toString()返回异常的简单信息描述、、类的name(全路径) :(冒号和一个空格)
               printStackTrace()获取异常类名,异常信息,异常位置,
              printStackTrace(PrintStreams)(i/o流)
throws
  throws 异常类名 (必须跟在方法的括号后面,可以跟多个异常,中间用,隔开)
编译期异常抛出,调用者必须处理;运行期异常抛出,可以不用处理。
     注意:尽量不要在main方法里抛出异常。

throw
  如果出现了异常情况,把异常抛出,抛出的是异常的对象。例:throw new 异常类型();

throws和throw的区别:
 throws:
    用在方法声明后面,跟异常类名
    可以跟多个异常类名,用,隔开
    表示抛出异常,由该方法的调用者处理
    表示出异常的一种可能,不一定发生异常
 throw:
    用在方法体内,跟的是异常对象名
    只能抛出一个异常对象名
    表示抛出异常,由方法体内语句处理
    throw一定抛出异常
try和throws选择:
    后续程序继续运行用try,不运行用throws(main方法里必须用try)

面试题:
  1》final,finally和finalize的区别
        final:最终
          修饰类:类不能被继承;
          修饰变量:变量是常量;
          修饰方法:方法不能被重写;
        finally:异常处理的一部分,释放资源。除非在执行finally之前JVM退出了,否则finally里的内容一定被执行。
        finalize:Object的一个方法,用于垃圾回收。
2》如果catch里面有return语句,finally里面的代码还会执行么?如果会,是return前,还是return后。

public class finallyDemo {
	public static void main(String[] args) {
System.out.println(fin());
	}
	public static int fin() {
		int a=50;
		try {
			System.out.println(a / 0);
			a=10;
		} catch (Exception e) {
			a = 20;
			return a;	//结果是20;在执行的时候进入catch这个时候return的不是a,是return 30,
		} finally {		//因为有finally,所以进入finally,然后继续return 20;
			a = 30;
		}
		return a;
	}
}

自定义异常:A:继承Exception //编译时期异常
          B:继承RuntimeException //运行时期异常

异常注意事项:A:子类重写父类方法时,子类方法必须抛出相同或父类异常子集(父亲坏了,儿子不能比父亲更坏)
          B:如果被重写的方法没有异常抛出,那么子类的方法绝不可以抛出异常,那么子类只能try,不能throws.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值