重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
前言
专业领域包括网站设计制作、成都网站设计、购物商城网站建设、微信营销、系统平台开发, 与其他网站设计及系统开发公司不同,创新互联公司的整合解决方案结合了帮做网络品牌建设经验和互联网整合营销的理念,并将策略和执行紧密结合,为客户提供全网互联网整合方案。现在使用Kotlin的Android开发者已经越来越多了。
这门语言从一开始的无人问津,到后来成为Android开发的一级语言,再到后来Google官宣的Kotlin First。Kotlin正在被越来越多的开发者接受和认可。
许多学习Kotlin的开发者之前都是学习过Java的,并且本身Kotlin就是一款基于JVM语言,因此不可避免地需要经常和Java进行比较。
Kotlin的诸多特性,在熟悉Java的开发者看来,有些人很喜欢,有些人不喜欢。但即使是不喜欢的那些人,一旦用熟了Kotlin进行程序开发之后,也难逃真香定律。
今天我想跟大家聊一聊的话题,是Kotlin在早期的时候争议比较大的一个特性:Checked Exception机制。
由于Kotlin取消了Checked Exception,这在很多Java开发者看来是完全不可接受的,可能也是许多Java支持者拒绝使用Kotlin的原因。但目前Kotlin已经被Google转正两年多了,开发了成千上万的Android应用。你会发现,即使没有Checked Exception,Kotlin编写出的程序也并没有出现比Java更多的问题,因此编程语言中对于Checked Exception的必要性可能并没有许多人想象中的那么高。
当然,本篇文章中我并不能给出一个结论来证明谁对谁错,更多的是跟大家谈一谈我自己的观点和个人心得,另外引用一些大佬的权威观点。
另外,这个问题永远是没有正确答案的,因为世界上没有最好的编程语言(PHP除外)。每个编程语言选择不同的处理方式都有着自己的一套理论和逻辑,所以与其去争论Java中的Checked Exception机制是不是多余的,不如去论证Kotlin中没有Checked Exception机制为什么是合理的。
那么,我们首先从什么是Checked Exception开始说起。
什么是Checked Exception?
Checked Exception,简称CE。它是编程语言为了保证程序能够更好的处理和捕获异常而引入的一种机制。
具体而言,就是当一个方法调用了另外一个可能会抛出异常的接口时,要么将这个异常进行捕获,要么将这个异常抛出,交给上一层进行捕获。
熟悉Java语言的朋友对这一机制一定不会陌生,因为我们几乎每天都在这个机制的影响下编写程序。
观察如下代码:
public void readFromFile(File file) { FileInputStream in = null; BufferedReader reader = null; StringBuilder content = new StringBuilder(); try { in = new FileInputStream(file); reader = new BufferedReader(new InputStreamReader(in)); String line = ""; while ((line = reader.readLine()) != null) { content.append(line); } } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } }