@@ -7,14 +7,32 @@ Exception :表示可恢复的例外,这是可捕捉到的。
77Java 提供了两类主要的异常 :runtime exception 和 checked exception 。 checked 异常也就是我们经常遇到的 IO 异常,以及 SQL 异常都是这种异常。 对于这种异常, JAVA 编译器强制要求我们必需对出现的这些异常进行 catch 。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆 catch 块去处理可能的异常。
88但是另外一种异常: runtime exception ,也称运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机 接管。比如:我们从来没有人去处理过 NullPointerException 异常,它就是运行时异常,并且这种异常还是最常见的异常之一。
99
10- ---------------------------------Throw and throws--------------------------------------------
10+ ---------------------------------Exception-----------------------------------------------------------
11+ *****************Throw and Throws*************************************
1112Throw:程序员自己抛出异常的语句:
1213 throw new RuntimeException();
1314Throws:声明方法需要抛出异常的定义:
1415 public void test() throws Exception{
1516 }
16-
17- ---------------------------------Proxy--------------------------------------------
17+ *****************Exception********************************************
18+ Throwable
19+ / \
20+ Error Exception
21+ / \
22+ checked Runtime
23+ 1.Error 和 Exception 都继承自Throwable类,都可以通过throw语句向上抛出。
24+ 2.我个人认为,异常分为两类,可预计的和不可预计的两种,我将不可预计的异常统称为RuntimeException。所有RuntimeException均被认为是程序员自己造成的异常,可以通过统一异常处理。
25+ 3.什么时候处理异常,什么时候抛出异常:
26+ 1.处理当前可以解决的异常。
27+ 2.抛出无法解决的异常。
28+ 4.finally:
29+ 1.finally语句不一定会执行到,有两种情况:
30+ ->try语句没有执行到,在之前程序就返回了。
31+ ->在try中出现了System.exit(0),这样虚拟机就被关闭了,finally也不会被执行。
32+ 2.当try和catch中有return时,finally仍然会执行;
33+ 3.finally是在return语句执行之后,返回之前执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改变,仍然是之前保存的值),所以函数返回值是在finally执行前就已经确定了;
34+ 4.finally中如果包含return,那么程序将在这里返回,而不是try或catch中的return返回,返回值就不是try或catch中保存的返回值了。
35+ ---------------------------------Proxy---------------------------------------------------------------
1836代理是一种面向切面编程的实现AOP,我们可以通过代理对方法进行增强。分为静态代理和动态代理,而动态代理又分为API(java.lang.reflect)中的Proxy和Cglib,后两种用于Spring。
19371.静态代理:
2038静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同父类.
0 commit comments