分享

java零基础:为什么Java代码中必须try catch 或者throw异常,不然编译不通过

pig2 发表于 2014-6-28 15:09:53 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 8703
问题导读:
java异常分为几种?
checked exception的作用是什么?
RuntimeException的作用是什么?





如果是.net、或则其它程序员,在接触Java的时候,你发现Java代码中异常成为Java中常态语言,那么这里面的原因是什么,为什么我的程序没有异常,还必须抛出异常,这让人有点差异,那么Java为什么会这么做,找了很多资料,下面的内容觉得还不错





核心原因:语言设计者觉得这样设计是最好的,O(∩_∩)O~

至于为什么python不是这么设计的,C#不是这么设计的,核心原因也是他们的语言设计者觉得不用catch异常是最好的,O(∩_∩)O~

那到底是显式去处理更好,还是不用显式去处理更好呢?
我来谈一下我的个人见解:

首先我们来定义什么叫异常,java中设计了两种类型的异常checked exceptionunchecked exception(即runtimeException)。

checked exception是需要显式捕获的,他向上层代码传递了一些信息,比如你校验用户登陆的时候,如果用户名在数据库中查不到,你可以抛出UserNotFoundException(定义为checked exception)来给上层代码传递这个User not found的信息,比如密码不对,可以创建一个PasswordErrorException。

RuntimeException,这种异常不需要显式捕获,比如IllegalArgumentException(参数不合法),DivideZeroException(除以0的异常),这种异常更像是一个错误的调用方法导致的,它在给上层代码传递的信息是:你用了一个很不对的方法在调用我,这是错误的,后果很严重哦,你如果没有防范措施(没有显式捕获),我可是会让终止这次方法调用链哦

对异常这个概念大家本身就没有一个统一的认识,比如python的设计者觉得:往上层代码传递信息根本不用checked exception,直接用多个方法返回值就可以了,所以他就只设计了第二种异常



没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条