首先有件事要和大家说一下:我的公众号现在可以留言了!

出于种种不可抗力的原因(你们懂的),2018 年 3 月 12 号之后注册的公众号将不带有留言功能,并且前三个月内注册但并未使用的公众号的留言功能也会被一并回收,所以我这个号注册时就没有留言了。最近我发现了可以用于留言的小程序,所以就借着这篇文章试验一下这种留言功能。希望看到这篇文章的小伙伴们能够给我留个言,我会一一回复的。


从开发工具谈起:

这是我平常用的几个编辑器。记得我刚开始学 C 语言,学 Java 的时候,还是用 Notepad++ 这种文本编辑器写代码,老师说是为了打基础,加深记忆。后来做开发,开始接触一些开发工具,什么 Dev C++,Eclipse,VS 还有 AndroidStudio 啥的,刚开始用的时候就觉得这些工具太神奇了,不光是组织你的工程文件,更是在你编写代码的时候帮你检查错误。我相信,代码自动补全和纠错一定是一个开发者最常用到的功能。不过,我想你也一定不建议编程初学者在学习的时候就使用这种东西,因为功能实在是太好用了!(以至于不怎么需要动脑很多工作就自动完成了)

尽管当时觉得神奇,但是现在的我明白的:开发工具里的纠错机制,正是来源于 Java 里对异常的判断。编译通过的软件运行却崩溃,也与它有关。借着还是初学者时的提问,今天再来把这个基础知识复习一下


1.异常概述:
学过 Java 的小伙伴们应该都知道,在 Java 里,异常主要分两种:Error (错误)和 Exception (例外),它们都继承自 Throwable 类。也就是说 Java 中所有的异常处理机制都来源于这个类。两个子类的区别非常好判断,其实只要看名字就能知道:Error,表示“错误”,尤其是指那些比较严重的错误,比如保存文件时磁盘空间已满。这种情况已经构成了代码运行中彻彻底底的“错误”,而并非修改代码就能解决的,所以作为开发者不必解决,只需要妥善地退出并弹出友好的提示即可。Exception 表示“例外”,这两个字表示的含义很明确:一般没事——只要你能按“规矩”使用/编写软件。这类异常是开发者所需要关心的。

2.代码中的异常:

忘加分号、未定义变量之类的错误,开发工具都能在编写时检查出来,这类代码中的问题如果不解决,就无法通过编译,被称为编译时异常。而如果代码通过了编译,软件开始运行后发生的错误则被成为运行时异常(RuntimeException)。比如在计算器软件中让 0 作为除数,开发者应该处理这样的“例外”。这是 Exception 类里包涵的两类情况。有一个简单的判别方法:如果一个类继承自 RuntimeException 类,就是运行时异常;如果直接继承自 Exception 就是编译时异常。

3.如何处理异常:

首先应该想一下,为什么我们非要去处理异常?如果不去处理的话又会发生什么?

在 Eclipse 输入了以下代码:

运行后的控制台输出:

显然,程序会报错。更重要的是程序会直接中断(在没有提示,更没有安全措施的情况下),这才是开发者需要妥善处理异常的原因。

解决方法:很简单,为了使得可能出现的异常得到处理并且程序不会中断,代码有两种编写方式,一种是 try...catch...finally组织代码,另一种 throw/throws (直接抛出给调用者)。基本的用法我想大家都会用,我就不多说了,忘了的话稍微查一下书即可。值得注意的是,我看过一些视频教程里的老师为了图方便,在演示时把可能存在问题的大段代码(并不是每行代码都涉及异常)都用 try 给包住,然后直接只 catch 一个“Exception“。在课堂上这样节省时间无可厚非,但是开发时最好不要这样图方便。软件运行时,Java 虚拟机遇到 try 就进入了异常处理机制,会预留计算机资源来应对可能出现的异常。”try“ 里包含的代码越多,可能涉及的异常种类就越多,就会在运行时占用更多资源(而并没有真正使用),造成浪费。所以 try 结构里的代码越少越好。当 try{} 里的代码出现异常时,虚拟机会创建一个 Exception 对象与 catch 里的 Exception 参数进行匹配,然后运行对应catch里的代码。

“throws ”跟在方法名之后,表示将可能出现的异常抛出,更多地只是一种标记,而 “throw”是一个具体的动作 —— 抛出一个异常对象。


好的,有关异常的内容就先写到这,但还没完。未来几天我会再把 IO 方面的内容复盘一下,涉及异常的会一并补充。

谢谢你能读到这里,欢迎留言讨论!

cronschedulebuilder 到时还没运行完_为什么我的软件编译时没问题,运行时却出错?...相关推荐

  1. 归纳推理测试没做完_朋友买了1斤紫菜,2年还没吃完,我教他这样做,2个月就吃完了...

    朋友买了1斤紫菜,2年还没吃完,我教他这样做,2个月就吃完了 紫菜成熟啦,这段时间回老家,都会看到紫菜养殖户脸上挂着笑容,因为今年的紫菜收成还不错.回家就为了拿紫菜,因为紫菜成熟的季节,朋友圈都在卖紫 ...

  2. 归纳推理测试没做完_敷完面膜不要做4件事,不但敷了面膜没效果,皮肤还变差了...

    阅读本文前,请您先点击上面的蓝色字体,再点击"关注",这样您就可以继续免费收到内容了.每天都有分享.完全是免费订阅,请放心关注. 夏天最惬意的事是什么呢?必须是洗完脸后,来张面膜贴 ...

  3. 归纳推理测试没做完_看她家新房,保洁做完还没家具就很漂亮,墙面刷灰色耐看又耐脏...

    每个人的需求与需求,每个人心目中的家都不一样,但我们都可能把家装出想要的效果,让家人,让自己以后生活会更舒适,待在屋里能感受到诗远方.通过别人家的装修,可以借鉴别人家一些相对比较好的经验,在装修过程中 ...

  4. 打了断点为直接运行完_黑社会行为?男子驾校身亡,家属看现场被保安围殴,手臂被打断...

    12月15日漩涡视频报道,在河南南阳,一名34岁的男子在驾校考科目一的时候身亡,警方排除他杀,但家属想要了解具体原因的时候被驾校拒绝了,死者家属被驾校的一大群保安围殴,其中一名家属手臂被打断. 在今年 ...

  5. 归纳推理测试没做完_天气热,教你用寒天粉做果冻,清凉爽滑,5秒吃完一盘没问题...

    天气越来越热,热得人连食欲都大减,网络上有很多教做夏日菜的菜谱,其原因无非是夏天真的让人没什么胃口.不过,小汐身为广东人,凉拌菜其实也不常吃,反而是甜品永远是大爱.对了,这就是夏天最大的优点,冰凉的汽 ...

  6. aspnet还有人用吗_微信公众号软件安装管家会员真的那么好吗

    如果你是冲里面的百度会员,我觉得完全没必要,因为里面的账号是多人共享.使用环境非常苛刻.很多账号都提不起速.第二如果你是为了里面的所谓精品课程,我觉得你去哔站一样可以找到更多更好的.而且也是比里面的内 ...

  7. vs2017运行环境_从零开始针对 .NET 应用的 DevOps 运营实践 运行环境搭建

    一.Overview 最近的一段时间,在公司里我都在进行基于 Jenkins 和 SonarQube 配合已有的 Gitlab 搭建部门的持续集成环境的工作,虽然之前有使用过 GitHub Actio ...

  8. 屏通触摸屏软件操作手册_屏通人机界面软件操作手册快速入门版.pdf

    屏通人机界面软件操作手册快速入门版 PM Designer 触控大师 屏 通 人 机 界 面 软件操作手册 快速入门版 0 目 录 第一章 PM Designer触控大师软件简介3 1.1 软件功能介 ...

  9. keyshot卡住了还能保存吗_倒入醒酒器的红酒一次没喝完,还能倒回酒瓶保存吗?...

    用餐结束,我们常会碰到这样的情况. 有朋友看着醒酒器里,还有大半瓶红酒在,有些心疼,便招呼服务员,把醒酒器里的酒液,倒回酒瓶,想要带走. 或者,家里请客人吃饭,开了不少红酒,吃完饭后,不少红酒还留在醒 ...

最新文章

  1. 没听说过“羽毛球VR”计划?嗯?
  2. 2021-04-21--中标麒麟-yum源修改
  3. 质量意味着在没有人看的时候把它做对
  4. java获取异常的数据_Java(8题):异常,通过try catch进行处理,登录,商品,使用jdbc进行读取,详细图析...
  5. Linux网络编程服务器模型选择之循环服务器
  6. 每个程序员都该学习的5种开发语言,不可错过!
  7. Jeecg开发平台 - Online表单专题课程
  8. 华为云GuassDB(for Redis)发布全新版本推出:Lua脚本和SSL连接加密
  9. Hibernate之事务处理
  10. matlab fspecial
  11. 5.Entity Framework Core 5.0 查询数据
  12. Spring 注解中@Resource 和 Authwired 的区别
  13. H265视频转码H264视频
  14. 如何通过VISIO来画网络拓扑图
  15. 安川e1000中文说明书_安川(YASKAWA)变频器E1000说明书.pdf
  16. Java 相关知识的学习(第一章至第三章)
  17. Qt官方示例-语法高亮器
  18. 性能工具之 Locust 工具关联与参数化
  19. 项目开发相关(附 Git 使用)
  20. PHP+Mysql—留言管理系统网站(前端+后端、整套源码)

热门文章

  1. 锐捷亮相GITC:请互联网企业为我点个赞!
  2. 《思科数据中心I/O整合》一2.11 活动-活动连接(Active-Active)
  3. linux增加调整虚拟内存
  4. [Android开源项目] GitHub开源项目总结 (转)
  5. 计算机英文版个人简历发文,计算机个人简历英文_英文简历.doc
  6. 在Java里怎将字节数转换为我们可以读懂的格式?
  7. leetcode 73. 矩阵置零
  8. 编译原理—语义分析(Java)
  9. 33岁想从头学做网页设计_从头开始设计精美的移动应用
  10. 牛客网 牛客小白月赛1 H.写真がとどいています