【笔记】对自定义异常的理解(Java)

2019-08-09 00:00:00 异常 理解 自定义

原本,原有的异常是非手动地、自动地抛出的。

 

了解自定义异常时,发现其信息只是:

  • 继承了谁,即它自己算哪种异常;
  • 它的信息,比如一个ID,这个貌似还是可选的;
  • 它是可被传入信息的

 

没有遗漏的话,就这仨了。

 

此时,困惑便出现了:

异常最关键的就在于它要表示某种错误或者说某类错误,所以异常类里面至少要含有「什么时候算是这种异常该被丢出的时候」这种程度的信息吧?

Java里的异常居然没有????

 

那计算机怎么知道,关于这个新定义的异常的,「它是哪种异常」的信息呢?

我明明都没告诉它啊????

 

这个关键的信息在代码中其实也算是有体现的,不过貌似只有具体的体现:

即,在throw的时候,这个信息才被告诉给了计算机。

 

如果要一口气设定了「都应该在啥时候扔某个自订的异常」的话,这意味着JVM完全可以自动抛出。

手动抛出的存在,似乎,让抽象地告诉计算机抛出异常的规则这种工作,变得不必要了——可能是因为已有的自动抛出规则都设置得够好了?……

总之,我现在可以确定的是,如果自定义的异常中并未在类中对计算机给出关于「应该以怎样的规则决定啥啥啥是否算得上这类异常」的信息,这一信息可以在使用throw时被具体地告知给计算机:只在有throw时,才抛出该自定义异常。

——即,自动抛出异常的规则是不会理会用户自定义的异常的。

 

(这真是遗憾,没法搞出一些可怕的事情了,比如把一些不好的命名习惯给算作编译时异常然后进一步升级编译器对程序员的规范……其实这个想法类似于是想要修改编译器规则了,当然,只能做到往越发严格修改。

——我原本理解的「自定义异常」就是要能办得到这种事情的/_>\。。。。)

相关文章