Day12:有问题要主动提出来

在初学程序的时候,一定很讨厌例外(Exception)发生,因为程序就没办法跑完了,也代表我们可能有地方写错,人嘛,一定不喜欢犯错,总希望事事都平顺如己意的完成。

但是当碰到一个完整的系统时,其实就会很感激有例外这样的机制,因为系统不是写作业的程序那麽单纯,层层堆叠的类别交互作用,例外机制让我们在设计程序时可以帮我们厘清,当有问题发生时,是发生在什麽位置,我们才可以有效率的解决问题。例外无所不在,人真的不是神,我们能够设想到的可能性非常有限,绝对需要完善的例外处理,透过不断测试才有机会让系统更完美。

所以今天要来谈谈Java的例外架构。

假设当我们在撰写IO相关的程序来读档时,IDE就会出现FileNotFoundException要我们处理,看是要在方法上throws还是要在方法里面建try catch block处理。
可是有时候我们自己写的程序,若有变数为null但却又叫用了该变数类别的方法时,就会在console跳出NullPointerException,可是IDE就没有要我们在程序码中处理NullPointerException。

为什麽有这样的差异呢?

这些不同类别的Exception,如果是强制要我们在程序码中处理的叫做受检例外(Checked Exception);而不需要强制处理的叫做非受检例外(Unchecked Exception)。
可是当我们查看官方Java API时,好像找不到甚麽check还是uncheck的类别?我该如何知道哪些是受检例外哪些是非受检例外勒?
exceptionStructure
其实就是看那个例外物件是处於例外家族中的哪个位置,简单来说只要不是RuntimeException这个家系的,就是Checked Exception;反过来说只要是RuntimeException家系的就会是Unchecked Exception。

至於左边被冷落的Error是甚麽呢?是指当程序发生严重的问题时,会被归类在这个分支,通常是不正常的状况发生时才会有Error,某部分会是硬体上所发生的问题,而这些问题对於程序设计者来说,也是无法预期的问题,故不会在我们coding时去处理。


<<:  CSS display:Grid

>>:  AE-Lightning 雷电云特效2-Day24

Sass @mixin实现RWD DAY36

今天我们要来介绍 Sass Mixin 与 content的搭配 来解决RWD Scss: @mix...

Day4 技术与人力资源的管理,外包的抉择

继承昨日的漫谈,当一个专案已经开始拆解步骤和预期的交付产出,同时专案经理就会心里琢磨着「这件工作要找...

成为工具人应有的工具包-18 LiveContactsView

LiveContactsView 喔喔!今天来到 Forensics 分类中最後一个小工具啦! Li...

谈谈 Spring boot Controller API 怎麽设计

说到了 controller 就不得不说一下 API,简单来说就是负责建立客户所需的内容和产生所需回...

Day18 Refs 和 DOM

React中若想将父层Component资料传递给子层Compontent的话,唯有使用Props方...