1.异常结构的五个关键字
try---(监视)你认为可能有问题的代码
catch:---捕获异常对象。解决措施(”提示,警告“)
多重catch块,子类异常类型在前,父类异常类型在后(必须)
finally:关闭资源等
finally 中的代码是一定会被执行的(不管是正常还是异常)
以下两种情况下,finally不执行:
1.return 不能终止,遇到return后,先执行 fianlly 然后执行return。
2.System.exit(1); fianlly 不执行。
throws:----声明的活。ArithmeticException, AbstractMethodError,ArrayStoreException
面对一段异常代码:你有几种解决方案:
1.【积极】 try--catch --finally
2.【消极】 向上报告: throws
throw:----抛出的活/制造异常。 throw new 异常对象(”错误原因“);
* ==="制造一场异常!"--->为了提醒,放大错误!
2.异常的分类
Object类
Throwable类
Err(错误) Exception(异常)
检查异常 运行时异常
3.Error和Exception的区别
Error类,表示仅靠程序本身无法恢复的严重错误,比如内存溢出,动态链接异常、虚拟机错误。
Exception类,由Java应用程序抛出和处理的非严重错误,如所需文件没有找到、零作除数,数组下标越界等。它的各种不同子类分别对应不同类型异常。可分为两类:Checked异常和Runtime异常
Checked异常和Runtime异常的区别
1)运行时异常,包括RuntimeException及所有子类,不要求程序对它们作出处理,如果运行时发生异常,会输出异常的堆栈信息并中止程序执行。
2)Checked 异常,程序必须捕获或者声明抛出这种异常,否则出现编译错误,无法通过编译。
4.Java异常处理try-catch-finally的执行过程
try-catch-finally程序块的执行流程以及执行结果比较复杂。基本执行过程如下:
程序首先执行可能发生异常的try语句块。如果try语句没有出现异常则执行完后跳至finally语句块执行;如果try语句出现异常,则中断执行并根据发生的异常类型跳至相应的catch语句块执行处理。catch语句块可以有多个,分别捕获不同类型的异常。catch语句块执行完后程序会继续执行finally语句块。finally语句是可选的,如果有的话,则不管是否发生异常,finally语句都会被执行。
需要注意的是即使try和catch块中存在return语句,finally语句也会执行。是在执行完finally语句后再通过return退出。
5.Error和Exception的区别
【1】位置不同
throw:方法内部
throws: 方法的签名处,方法的声明处
【2】内容不同
throw+异常对象(检查异常,运行时异常)
throws+异常的类型(可以多个类型,用,拼接)
【3】作用不同
throw:异常出现的源头,制造异常。
throws:在方法的声明处,告诉方法的调用者,这个方法中可能会出现我声明的这些异常。然后调用者对这个异常进行处理:
要么自己处理要么再继续向外抛出异常