---恢复内容开始---

首先,我是个小小的菜鸟,最近突然突发奇想,想研究一下java的异常和异常的处理,稍有些理解,老鸟们莫要嘲笑。。。

  既然要讲异常和异常的处理,我们就要先了解异常,那么,什么是异常呢?

简单的说,就是在一个程序运行的时候,发生的不可知的错误时而停止运行的时候,我管它叫做异常。

可以说异常时时刻刻陪在我们身边,从简单的代码环节,到生活上,都有可能发生异常。举个比例,我们去爬山的时候

要坐电缆,可是不巧,电缆没电了,怎么办? 一般情况我们有两种解决方法,一个是爬上去,一个是呆在原地。

现在在从这个例子来分析:

人乘坐电缆来到山上,这个可以看成是在运行时候的代码。

电缆没电了,人呆在原地,这个就可以看成是异常。

电缆没电了,我们爬上去,这个就可以说是异常处理。

废话这么多,就是想让比我还要小的菜鸟更容易的理解异常,那好我们直接来用代码来来看看什么事异常。

出错的代码

运行后显示的错误信息

这一段代码运行的时候会出现错误,而编译时不会出错,这就是异常!(比较专业,没有生活小案列容易懂  >*-*<)

  以上讲的就是异常,但是异常是怎么在控制台中显示出来的呢?  接下来我就要给大家介绍一下异常的架构和分支了!

  其中,Throwable是所有异常的超类,他继承与Object类。因为所有类都继承与Object类

  而Throwable下游两个分支Error和Exception类,

  其中Error表示仅靠程序本身无法恢复的严重错误,如内存溢出动态链接失败、虚拟机错误。

  而Exception是由java应用程序抛出和处理的非严重错误。

  而我们经常用到的异常都有如下几种

  Exception:顶级异常;

  ArithmeticException:算数错误情形,比如说用0作为除数。

  ArrayIndexOutOfBoundsException:数组下标越界。

  NullPointerException:尝试访问null对象成员。

  ClassNotFoundException:不能加载所需类。

  InputMismatchException:欲得到的数据类型与实际输入的类型不匹配。

  IllegalArgumentException:方法接收到非法参数。

  ClassCastException:对象强制类型转换出错。

  NumberFormatException:数字格式转换异常,如把“abc”转换成数字。

  异常的介绍就先到这里,我们既然知道了异常,就应该知道怎么去捕获异常,

而我们捕获异常时,就需要用try-catch-finally语句了。

  先讲一下他的语法:

  try{

    //代码块

  }catch(Exception e){

    //代码块

  }finally{

    //代码块

  }

  他的执行过程就是先执行try块里的内容,当try里的内容出现错误的时候,走catch块,但是finally块永远都会被执行,

除非你不写。

  他的执行流程说完之后,咱们在说说这三个模块的组合

1.          2.

  try{         try{

  }catch{       }finally{

  }           }

  到最后面的时候给大家出一个异常捕获的面试题。

  

  异常捕获就先讲到这里,下面我们来说说异常的两个关键字,throws和throw。

  throw是抛出异常,而throws是声明异常的,如图:

  

当你抛出异常时如果没有使用try-catch语句进行异常捕获,就必须要声明出去,表示谁要调用我这个方法谁就要进行异常捕获。

接下来面试题出来了:

有心的人可以想想看这道题的结果 看看返回的是几,要用大脑哦。答案在最下面!

答案是2,因为在try块中的return i的值是被虚拟机偷偷的在虚拟内存开辟了一块空间,而这个空间中存储的就是第一次return的值。

答对的和没答对的记得留言哦。。。。。其实我是一只小菜鸟!

}

那些年,我们不懂的却又不得不提的 JAVA异常和异常处理!的更多相关文章

  1. Java的多线程机制系列:不得不提的volatile及指令重排序(happen-before)

    一.不得不提的volatile volatile是个很老的关键字,几乎伴随着JDK的诞生而诞生,我们都知道这个关键字,但又不太清楚什么时候会使用它:我们在JDK及开源框架中随处可见这个关键字,但并发专 ...

  2. Java的多线程机制系列:(四)不得不提的volatile及指令重排序(happen-before)

    一.不得不提的volatile volatile是个很老的关键字,几乎伴随着JDK的诞生而诞生,我们都知道这个关键字,但又不太清楚什么时候会使用它:我们在JDK及开源框架中随处可见这个关键字,但并发专 ...

  3. 不得不提的volatile及指令重排序(happen-before)

    微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...

  4. 不得不看的Java代码性能优化总结

    原文:https://blog.csdn.net/mr_smile2014/article/details/50112723 前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么 ...

  5. 关于引脚复用,不得不提的GPIO_Pin_sources 和GPIO_Pin

    今天在端口复用时遇到了困惑,参考:http://www.51hei.com/bbs/dpj-40992-1.html 调整前的代码GPIO_PinAFConfig(GPIOA,GPIO_Pin_9,G ...

  6. 不值一提,却又不得不提的“CSS文本超出部分省略号代替”

    偶然看到一篇类似css技巧与经验总结的文章,其中有一部分非常熟悉,那就是“css控制元素内文本超出部分使用省略号代替”,一般实际工作中, 很多产品经理会对页面UI有这样的要求.还记得,第一次做这个功能 ...

  7. JVM学习(4)——全面总结Java的GC算法和回收机制

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: 一些JVM的跟踪参数的设置 Java堆的分配参数 -Xmx 和 –Xms 应该保持一个什么关系,可以让系统的 ...

  8. [数据库锁机制] 深入理解乐观锁、悲观锁以及CAS乐观锁的实现机制原理分析

    前言: 在并发访问情况下,可能会出现脏读.不可重复读和幻读等读现象,为了应对这些问题,主流数据库都提供了锁机制,并引入了事务隔离级别的概念.数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务 ...

  9. JVM学习(4)——全面总结Java的GC算法和回收机制---转载自http://www.cnblogs.com/kubixuesheng/p/5208647.html

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: 一些JVM的跟踪参数的设置 Java堆的分配参数 -Xmx 和 –Xms 应该保持一个什么关系,可以让系统的 ...

随机推荐

  1. mybatis 详解(四)------properties以及别名定义

    上一篇博客我们介绍了mybatis的增删改查入门实例,我们发现在 mybatis-configuration.xml 的配置文件中,对数据库的配置都是硬编码在这个xml文件中,如下图,那么我们如何改进 ...

  2. LFLiveKit架构简介

    LFLiveSession LFLiveSession 是整个sdk的核心,提供对外部的主要接口.主要功能有:管理推流开关.管理音视频录制及渲染.管理录制渲染后的音视频编码.管理编码后的数据上传.管理 ...

  3. hdu--1316--How Many Fibs?(java大数)

    How Many Fibs? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  4. 修复intellij idea 2017.2中文输入法无候选框,亲测可以用

    注:要说用搜狗拼音8.6版本不会出现这问题.使用拼音的可以去下载安装试一下.用五笔的就可以使用本方法修复,本人就是使用五笔的. 完美解决中文输入法的问题.出现bug的原始是jb自己编译的openjdk ...

  5. shader之半兰伯特漫反射

    看很多人实现shader都用插件shader force,那我还学shader干X!!!??? 好了,废话不多说,学习shader去.... 漫反射在shader里算是最基础的知识了.入手shader ...

  6. windows 快捷方式(.lnk)代码执行漏洞(CVE-2017-8464 )[附EXP生成工具]

    最近看到网上曝光了一个windows远程代码执行的漏洞,黑客可以通过一个快捷方式在用户电脑上执行任意指令,于是便对该漏洞进行了部分分析. 1. 漏洞描述: MicrosoftWindows .LNK  ...

  7. mysql metadata lock

    想必玩过mysql的人对Waiting for table metadata lock肯定不会陌生,一般都是进行alter操作时被堵住了,导致了我们在show processlist 时,看到线程的状 ...

  8. node.js之模块

    node.js之模块 1.自定义模块的设置 加载自定义模块利用require: eg: require('./custom_module.js') 2.从模块外部访问模块内的成员 2.1使用expor ...

  9. (译)package.json详解

    原文链接 概述 本文囊括了所有package.json文件中你需要知道的细节.注意package.json必须是纯JSON的,而不仅仅是一个JavaScript对象字面量.该文件描述的很多行为都受np ...

  10. RQNOJ 201 奥运大包围:LIS + 拼链成环

    题目链接:https://www.rqnoj.cn/problem/201 题意: 开始时n(n<=1000)个人手拉手围成一个圈. 后来这些人中的一些按顺序向里面出圈形成一个新圈.从而使原圈形 ...