JVM对异常的默认处理方案
JVM对异常的默认处理方案
1 package cn.itcast_01; 2 3 /* 4 * 异常:程序出现了不正常的情况。 5 * 6 * 举例:今天天气很好,班长出去旅游。骑着自行车,去山里面呼吸新鲜空气。 7 * 问题1:山路塌陷了,班长及时停住了,但是过不去了。严重的问题。 8 * 问题2:班长出门推自行车,发现气没了,把气吹起来。出发前就应该检查的问题。 9 * 问题3:班长骑着车在山路上惬意的行驶着,山路两边是有小石子的,中间是平坦的水泥路。 10 * 一直在平坦的水泥路上行驶是没有任何问题的,但是呢,他偏偏喜欢骑到小石子上,结果爆胎了。旅游的过程中出现的问题。 11 * no zuo no die。 12 * 13 * 程序的异常:Throwable 14 * 严重错误问题:Error 我们不处理。这种问题一般都是很严重的,我们一般处理不了,比如说内存溢出。 15 * 问题:Exception 16 * 运行期问题:RuntimeException 这种问题我们也不处理,因为是你写代码的问题,而且这个问题的出现肯定是我们的代码不够严谨,需要修正代码的。 17 * 编译期问题:不是RuntimeException的异常 必须进行处理的,因为你不处理,编译就不能通过。 18 * 19 * 如果程序出现了问题,我们没有做任何处理,最终JVM会做出默认的处理。 20 * 把异常的名称、原因及出现的位置等信息输出在控制台。 21 * 同时会结束程序。 22 * (但是呢,其余没有问题的程序就不能继续执行了) 23 * 所以感觉JVM的默认处理不够好,既然不好那我们就自己来处理呗。 24 */ 25 public class ExceptionDemo { 26 public static void main(String[] args) { 27 // 第一阶段 28 int a = 10; 29 // int b = 2; 30 int b = 0; 31 System.out.println(a / b); 32 33 /* 34 * JVM发现运算是已经违反了数学运算规则,java将这种常见的问题进行描述,并封装成了对象叫做类ArithmeticException(ArithmeticException 算术异常)。 35 * 当除0运算发生后,JVM就将该问题打包成了一个异常对象。 36 * 并将对象抛给调用者main函数,new ArithmeticException("/by zero"); 37 * 38 * main函数收到这个问题时,有两种处理方式: 39 * 1:自己将该问题处理,然后继续运行程序。 40 * 2:自己没有针对的处理方式,只有交给调用main函数的JVM来处理。 41 * 42 * JVM有一个默认的异常处理机制:即将该异常进行处理,将该异常的名称、异常的信息和异常出现的位置打印在了控制台上,同时将程序停止运行。 43 */ 44 45 // 第二阶段 46 System.out.println("over"); 47 } 48 }
程序的运行结果为:
Exception in thread "main" java.lang.ArithmeticException: / by zero at cn.itcast_01.ExceptionDemo.main(ExceptionDemo.java:31)
我的GitHub地址: https://github.com/heizemingjun
我的博客园地址: http://www.cnblogs.com/chenmingjun
我的蚂蚁笔记博客地址: http://blog.leanote.com/chenmingjun
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
C#正则表达式语法教程
C#语法之正则 本文提供全流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) Chinar —— 心分享、心创新!助力快速理解: 正则表达式的用法、规范为新手节省宝贵的时间,避免采坑! Chinar 教程效果: 正则:^((([1]?\d\d?|2[0-4]\d|25[0-5])\.){3}([1]?\d\d?|2[0-4]\d|25[0-5]))$ 1 Regular Expression —— 正则表达式 2 Regex Tools —— 正则表达式工具 3 Contain abc —— 是否包含 abc字符 4 MetaCharacter —— 元字符 5 ESC —— 反义字符 6 Repetition Descriptor —— 重复描述字符 7 Alternative —— 择一匹配符 8 Grouping —— 分组 9 Verification IPV4 —— 验证 IP 合法 10 Verification IPV4 —— 菜鸟深造 支持 May Be —— 搞开发,总有一天要做的事! ...
- 下一篇
C#温故而知新系列 -- 闭包
闭包的由来 要说闭包的由来就不得不先说下函数式编程了。近几年函数式编程也是比较火热,我们先来看看函数式编程的一些基本的特性这个有助于我们理解闭包的由来。 函数式编程 函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念。这里很明显的指出了函数式编程中最重要的就是函数而且是数学中的函数,比如f(x),数学中的函数最大的特点就是只要是同样的参数x那么我的结果必定是相等的,也就是说我们函数的返回值只是依赖于参数而不依赖于其他状态(比如js中的全局变量就是一个干扰因素);后一句中说避免变量的概念,这句话如果从函数式编程来说不太恰当,因为这句话中的函数意思还是我们在编程语言中所使用的变量也就是一个存储单元,而在函数式编程中变量却是数学中变量的定义是一个值得名称。比如,我们最基本的赋值等式 x = x+1,让我们程序员看这是一个简单的赋值代码,而让学数学的人来说这个等式是根本不成立的。 所以我们在函数式编程中是不允许多次赋值的。而这一句话也是讲述了函数式编程好处的最主要的原因: 第一点、函数的结果只依赖于参数而不依赖其他状态,这样写的代码很容易进行...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- 设置Eclipse缩进为4个空格,增强代码规范
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS关闭SELinux安全模块
- SpringBoot2更换Tomcat为Jetty,小型站点的福音