大家好,博主是个东北人哈尔滨那嘎达的,在实习中吧,感觉自己学习之路贼拉长,学习又没乐趣,感觉工作中的人都感觉我都东北话好玩儿,
那我就用东北话来分享一些知识和学习成果,这样既进步又有趣,以下有什么不对的欢迎大家呲哒我。
在我们写代码的时候总会遇到抛异常啥的,但是那玩意究竟咋用,往哪嘎达用,我就简简单单分享一下子。
throws用在方法上,在函数头,而throw出现方法体中,
throws表示这个方法体内 妖觉是(可能)出现的异常,throw那肯定就是出现了异常,
处理异常是一层一层往上 leng(抛),一直到某个方法处理了或者leng(抛)给了jvm,
首先附上代码显示出现了IOException的时候,没有具体方法处理,直接一层层抛给jvm的情况
package design_mode.proxy.static_proxy; import java.io.IOException; public class text { int age; public void a() throws IOException{//就直接抛出可能的异常没有处理 int i=0; int x=5/i; System.out.println(x); } public static void main(String[] args) throws IOException{//main函数也没处理就会抛给jvm text t=new text(); t.a(); } }
主要看代码中的注释,就解释了throws 嘎哈了(干什么了),就是在方法中抛出可能的异常,main函数也抛出可能的异常,最后一层层 leng (抛出)给了jvm,然后控制台输出
Exception in thread "main" java.lang.ArithmeticException: / by zero
at design_mode.proxy.static_proxy.text.a(text.java:14)
at design_mode.proxy.static_proxy.text.main(text.java:22)
其实咱不管有没有写两个throws,都会由jvm抛出异常by zero所以就说明throws是一层一层抛出可能出现的异常
下面就说一下用throw的用法,因为当我们用throw就说明一定出现异常了,然后抛给main函数,那么main函数接到throw来的异常再用try catch来写出具体啥异常,
下面是代码实现和具体的注释解释
import java.io.IOException; public class text { int age; public void a() throws IOException{//throws用在方法上,表示这个方法可能抛出的异常 int i=0; if(i==0) { throw new IOException();//throw表示已经出现异常,抛给main处理,如果main没处理就会往上抛 } int x=5/i; System.out.println(x); } public static void main(String[] args){ try { text t=new text(); t.a(); } catch (IOException e) { System.out.println("出现io异常"); } } }
控制台输出为:出现io异常
这说明public void a() throws IOException中的throws IOException表明这个a方法可能抛出io异常,然后 throw new IOException();//throw表示已经出现异常,抛给main处理,如果main没处理就会往上抛,但是这里我在main函数中try catch了IOEception并且输出 System.out.println("出现io异常"),所以控制台输出为:出现io异常
博主是刚刚在实习的小白,希望哪里不对大家多多指正,一起成长一起进步,每天博主会发一个java学习的小知识QAQ,希望如果大家伙儿感觉挺好玩er就点个小心心。