java 语法错误_java菜鸟提问:编译时异常和语法错误的区别?

语法错误是你真写错了,比如“All the people here work hardly.”这句话就是语法错误,hard也可用作副词,所以“All the people here work hard.”这样就好了。比如你一个Python程序员来写Java代码,上来就是一个a=100,Python没问题,Java就不行了,你这a的类型都没有?报错。

运行时异常是你只要使用姿势正确,那么它就应该正常工作,使用姿势不正确,那就抛出来的异常,比如下面这个方法

如果你给的参数确实可以转成数字,那程序正常运行,但是如果你给的参数不能转成数字,他就不能正常运行,这个时候他抛出运行时异常NumberFormatException。只要你能保证你给他的数据都能正确的转成数字,那就!!一定不会!!抛出NumberFormatException。

至于怎么保证,那是调用方的事情是吧,假如你是写这个parseInt方法的人,你不用管调用你代码的人这么保证对吧,你也管不着。

受检异常则是强制性的必须要求调用方在出错的时候做点事情。这和运行时异常有一点区别的地方就是像刚才提到的parseInt方法,只要调用方参数ok,那我就一定不会抛出NumberFormatException,调用方也就一定不会得到这个异常,所以他也不用处理(注意我说的前提是他每次给的数据都ok)。但是受检异常是,就算你每次调用都给了正确的数据,他也有可能会出错,不怕一万就怕万一是吧,运气背出现了一也要处理才对。

简单的说区别就是运行时异常,只要参数ok,那就一定不出现异常,这个时候调用方也就没有必要catch一下异常或者怎么样(你都保证一定不出现异常了,你还要写处理这个异常的代码?没必要对吧)。但是受检异常是就算参数都ok,他也可能出问题,所以他要求你一定要写代码处理受检异常,你把它catch住算是处理了,你把它throws声明说我处理不了,调用我的人自己看着办也算是一种处理方式对吧。

举一个受检异常的例子

URL url = new URL("https://www.google.com");

URLConnection conn = url.openConnection();

try {

conn.connect();

} catch (IOException e) {

e.printStackTrace();

}

你说这参数写的有问题吗,没有对吧,那这代表这个connect方法一定不出错?不代表。你访问不了google,你这参数写的再对你也访问不了,你不管怎么改进你这点代码,不行就是不行。由于你这个网络的问题对吧,你不可能做到你一定可以connect成功,所以写这个connect方法的人觉得你一定要处理连不上怎么办,所以他给了你一个受检的IOException。

总结一下

1.语法错误就是你不会写代码,瞎写。

2.运行时异常就是,写那个parseInt方法的人觉得,只要你给我的参数都对,我就一定可以正常工作,只有参数不对的时候,我才抛出一个运行时异常NumberFormatException。这样的话只要你保证你每次调用时都能给正确的参数,你就永远不需要处理NumberFormatException。

3.受检异常就是写那个connect方法的人觉得,就算是你做了最大的努力改进你的代码,就算是你的代码已经完美的不行,你用我的connect方法,我也可能会报错,所以我给你一个受检异常IOException,你的代码一定要处理才行。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值