[倾心笔记,请放下浮躁耐心理解]

一,java内置异常和核心方法Throwable;


Throwable是一个异常的顶级类,他下分为Error可简单理解为高铁运行中脱轨,人为无法干预,常见的如代码超出内存,人为不可控。所以我们把精力集中于Exception即可。

IOException是代码运行前系统可帮你检查出来,RuntimeException是运行时候的异常,比如数组越界,运行前是找不到的,接下来会详细介绍这两种Exception.

首先,大家需要知道是每个异常是在java中有对应的类的,他们都继承Throwable,我们可以在IDEA中双击Shift,查找对应的类,来理解错误,或者在百度搜索,慢慢的掌握每一个。

现在我们来实践一下Throwable方法,里面用到了try{}catch(Exception){}补获方法,大家先接触一下

package chapter7_2;public class Exception {public static void main(String [] args){try{int result = 25/0;//除数不能为0System.out.println(result);}catch(java.lang.Exception e){String mgs =e.getMessage();//得到异常的详细信息System.out.println(mgs);System.out.println("==============================================");StackTraceElement [] arr=e.getStackTrace();//堆栈层次的数组System.out.println(arr);System.out.println("===============================");e.printStackTrace();//打印错误的堆栈信息,即错误输出流,可以看到错误原因和所在位置}}
}

运行结果

 可能大家不太理解,后续讲解会一一介绍,一阶段只是介绍使用方法而已。

二,Try Catch进行异常捕获

异常处理之捕获

finally在后续课程讲解,第二节首先教大家使用Try Catch捕获(Exception是顶级类,可以细分)

注意

case里面的类要选则java.long包的下的Exception.

代码演示

package chapter7_3;public class Exception2Test {public static void main(String[] args) {try {//try 如过没有错误,就不读取catch,若出错,则执行int result = 25 / 0;//除数不能为0System.out.println("正常执行");System.out.println(result);}catch (Exception e){System.out.println("进入exception  begin");e.printStackTrace();System.out.println("进入exception  end");}}
}

运行结果

这里告诉你by 0 即错误原因,还有对应的位置类

such2

代码

package chapter7_3;public class Student {private int age;private String name;public void setAge(int age){if(age<0){throw new IllegalArgumentException("参数异常");//后续会学。这程序员设计是一个抛出异常。。。。。。。这句代码就是抛一个对象出去对象 new Illegal...(“参数异常”)}this.age=age;}public int getAge(){return age;}public void setName(String name) {this.name = name;}public String getName() {return name;}
}
=================================================================
package chapter7_3;public class Exception2Test {public static void main(String[] args) {
//        try {
//            //try 如过没有错误,就不读取catch,若出错,则执行
//            int result = 25 / 0;//除数不能为0
//            System.out.println("正常执行");
//            System.out.println(result);
//        }catch (Exception e){
//            System.out.println("进入exception  begin");
//            e.printStackTrace();
//            System.out.println("进入exception  end");
//
//        }test();}public static void test(){Student student = new Student();student.setAge(-1);}
}

结果; 这里会抛出错误,但是,如果你已经知道了此错误会出现,这里就用到了我们的try catch捕获,话不多说,代码见//下面代码只展示try catch方法 即上面的代码的test()方法

public static void test(){try{Student student = new Student();student.setAge(-1);}catch(Exception e){System.out.println("出异常了");}}

结果如你所愿

现在我们来讲多个异常块,可以理解为Exception下面细分的子类,话不多说,上代码、(和上面一样,这里我只对test()方法进行修改),上代码!

public static void test(){try{Student student = new Student();student.setAge(-1);}catch(NullPointerException e){System.out.println("出异常了 NullPointerException");}catch(IllegalArgumentException){System.out.println("出异常了 IllegalArgumentException");}//这里会执行Illegal,因为在Student中已经用throw()方法抛出了,//若没有对应的异常类进行捕获,则会默认打出异常堆栈}

注意;

若没有对应的异常类进行捕获,则会默认打出异常堆栈

三。java一场进阶之Finally讲解和多重捕获

多重捕获,二末尾已讲解

需要注意的是:代码中发生一场异常,则异常抛给第一个catch块,如果不匹配则继续网下一个catch进行传递

Finally讲解

代码演示

package chapter7_4;public class TestException3 {public static void main(String[] args) {int result = divide(25,5);System.out.println("最终的结果="+result);}public static int divide(int num1, int num2) {try {int result = num1 / num2;return result;} catch (Exception e) {System.out.println("出异常");} finally {System.out.println("finally 执行了");}return -1;}
}

结果;

我们看,这里num2不为0 ,且catch没有运行,但是finally运行了,而且在return result之前!

这里我们能很好的理解finally语句的使用方法

******************面试题*********************

public class TestException3 {public static void main(String[] args) {int result = divide(25,5);System.out.println("最终的结果="+result);}public static int divide(int num1, int num2) {try {int result = num1 / num2;return result;} catch (Exception e) {System.out.println("出异常");} finally {System.out.println("finally 执行了");return -2;}//return -1;}
}

结果

这里的话,当try catch finally的 话 ,以finally为主

#返回结果以finally为准

四,java异常处理之throws-throw关键字

代码出异常的处理方法

#这里throws在方法右面   而throw以一个对象的身份在方法里面

#核心 -----往外抛

可能文字无法让大家理解,话不多说,上代码!(下面的代码我来交你怎么抛哈哈哈,这其实跟套娃和甩锅差不多)

package chapter7_5;public class TestException5 {public static void main(String [] args){try{int result = divide(35,0);//需要说明的是,在方法体中加上throws的话,就是一个可查异常,就是系统强迫你用try来 解决,不然会报错System.out.print("result="+result);}catch(Exception e){System.out.print("main异常");}}public static int divide(int num1,int num2)throws Exception{//这里的throws Exception可以理解为一个抛出的借口try{int result = num1/num2;return result;}catch(Exception e){System.out.println("出异常了");throw new Exception("参数异常");//生成对象调用上面的借口,注意调用这个方法还是错的,需要继续抛}////如果这里不用throws的话就需要在这里加return -1;就是直接出来异常。;若想不报错,就是用throws跑出去//就相当于给外面说一声异常了,所以我不返回值了,正常的return -1;就会报错。因为你已经说错了,就不会按照既定的返回值}
}//运行的顺序为 先在方法体里面异常,被里面的try catch捕获,然后new Exception抛出到主函数的try再次被捕获

结果,

还可以继续抛出,下面体现了对异常的处理的两个原则,

在本地处理   或者   抛出

请看代码

这是报错的,因为有异常,且这里与0 无关,因为在方法体右面用了throws方法,叫做可查异常,要么你捕获,要么你抛出例子里面是捕获在本地自己解决,下面我来给大家继续抛出

这里就是我们再次抛出

五,java进阶基础之自定义异常

下面的方法以后自定义都可以套用,大家有不理解的地方可能是一些基础没有掌握好,多搜索博客就行

注意。获取Exception类,Ctrl+左键

话不多说,上代码,

package chapter7_6;public class CustomExceptionTest {public static void main(String [] args) {try {test();}catch(UserNotEnoughException e){//()里面的相当于创建了XXXException的对象,查看代码,结合构造函数,这里相当于完成了set的调用int code=e.getCode();//所以这里直接get就可以String mgs=e.getMgs();System.out.println("code="+code+"mgs"+mgs);}}public static void test()throws UserNotEnoughException{throw new UserNotEnoughException(-1,"人员不够");//建造一个Excepton为了验证刚刚的自定义Exceptionfang方法}}
==================================================================
package chapter7_6;public class UserNotEnoughException extends Exception {//可以直接定义自己的属性,也可重写构造器中 的方法private int code;private String mgs;public UserNotEnoughException(){super();//不理解super()和构造方法  看博文即可}public UserNotEnoughException(int code,String mgs){super(mgs);this.code=code;this.mgs=mgs;}public void setCode(int code) {this.code = code;}public int getCode() {return code;}public void setMgs(String mgs) {this.mgs = mgs;}public String getMgs() {return mgs;}
}

运行结果;

制作不易,记得三连!!!!!!

JAVA 异常Exception讲解相关推荐

  1. Java 异常Exception e中e的getMessage()和toString()以及 e.printStackTrace();方法的区别

    Java 异常Exception e中e的getMessage()和toString()以及 e.printStackTrace();方法的区别 参考文章: (1)Java 异常Exception e ...

  2. java经常会出现异常的是,“Java异常Exception”总结

    1. 异常(Exception). 2.Java中的异常分为两大类: a) Checked exception  (非  Runtime Exception) 非运行时异常 b) Unchecked ...

  3. Java 异常Exception

    Java异常处理总结 异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常 ...

  4. 异常处理 ?处理(try-catch) :甩锅(throws)_ java异常(Exception)处理

    目录点击跳转 本章概要 java异常处理入门 异常介绍 异常分类 异常体系图 运行时异常 编译异常 异常课堂练习 异常处理 ` try-catch `异常处理 `try-catch`异常处理小测试 ` ...

  5. Java 异常——Exception详解

    异常的介绍 异常的概念 异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止. 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常 ...

  6. java异常详细讲解_Java异常处理机制的详细讲解和使用技巧

    一起学习 1. 异常机制 1.1 异常机制是指当程序出现错误后,程序如何处理.具体来说,异常机制提供了程序退出的安全通道.当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器. 1.2 ...

  7. java异常详细讲解_java异常的讲解

    java的异常类----Throwable是所有异常类的超类哦,俗称:超人 Throwable |--Error |--Exception |--NullPointException |--..... ...

  8. java异常 子类_Java异常 Exception类及其子类(实例讲解)

    C语言时用if...else...来控制异常,Java语言所有的异常都可以用一个类来表示,不同类型的异常对应不同的子类异常,每个异常都对应一个异常类的对象. Java异常处理通过5个关键字try.ca ...

  9. java exception子类_Java异常 Exception类及其子类(实例讲解)

    C语言时用if...else...来控制异常,Java语言所有的异常都可以用一个类来表示,不同类型的异常对应不同的子类异常,每个异常都对应一个异常类的对象. Java异常处理通过5个关键字try.ca ...

最新文章

  1. jQuery 学习笔记一(认识jQuery jQuery选择器 jQuery中的DOM操作)
  2. 用CSS 给网页装潢[3] -构造文本
  3. 在PHP里使用 ImageMagick 生成 base64 图片
  4. linux 进程间通信 dbus-glib【实例】详解四(上) C库 dbus-glib 使用(附代码)(编写接口描述文件.xml,dbus-binding-tool工具生成绑定文件)(列集散集函数)
  5. mysql增量_mysql实时增量备份
  6. Ubuntu 重置MySQL密码
  7. arcgis server site 快速恢复与重建
  8. 有关C#中的引用类型的内存问题
  9. cocos2D icon
  10. 二分专题(不定期更新)
  11. 对未来国产操作系统的期望
  12. 51单片机计算机加原理图,MCS-51单片机最小系统的组成部分及电路图介绍
  13. NXP JN5169 使用硬件 SPI 从机收发数据
  14. nginx: [emerg] could not build server_names_hash
  15. 学云计算能从事哪些岗位 未来职业发展是什么样
  16. Entry name ‘res/layout/test_toolbar.xml‘ collided
  17. python123英文字符的鲁棒_Robust Locally Weighted Regression 鲁棒局部加权回归 -R实现
  18. 转:浅谈Radius协议 -来自CSDN:http://blog.csdn.net/wangpengqi/article/details/17097221
  19. 【小河今学 | JavaScript+jQuery】JQ插件开发练习之数据表格插件
  20. 我的世界它最懂 华为nova7系列打造5G自拍旗舰

热门文章

  1. 国产芯片替代ST很容易,航顺HK32F103RET6替代STM32F103RET6,航顺芯片,航顺MCU
  2. 基于JAVA校园互助平台计算机毕业设计源码+数据库+lw文档+系统+部署
  3. 电影票+外卖CPS返利项目实操
  4. 信息学奥赛入门之:Go C 编程 第5课 魔法盒子
  5. PyTorch基础(六)----- torch.eq()方法
  6. 【计算机网络】参数包含特殊字符导致导致Http Get 请求报错
  7. 台式计算机销量排名,2019台式电脑销量排行_笔记本哪些好 2019笔记本销量排行榜...
  8. sRGB色域与NTSC色域
  9. 与多家奥运协会达成合作  用影像记录中国体育  IC photo布局“奥运计划”
  10. 双击图标出现属性,要右键打开的原因及解决