关于checked exception & unchecked exception(RuntimeException)

         近日开发百度sdk,用到自定义异常,只是按照原来的学的,只是继承自Exception,没有深思下去。看了一点百度官方的sdk源码,看到里面有方法内有抛出异常,可是方法却没有抛出异常,甚是纳闷。后来想了想,有checked exceptionunchecked exception之分。所谓checked exception就是必须手动try catch或者throws的,unchecked exception 可手动try catch或者throws,也可什么也不作,交给程序处理。 java

        忽然想到啥时候用checked exception,啥时候用unchecked exception,很迷惑,百度之加上本身理解,感悟以下:程序员

checked exception 是在用户操做或者输入数据有误时必须捕捉而不至于程序崩溃退出而进行的必须的操做ide

unchecked exception 代表了程序自己有问题,而不是用户违规操做而致使的问题。url

 

举例来讲:spa

    假如作了个计算器程序,要求用户必须输入数字,而用户可能不按规矩来,输入了不合法的非数字符号,那么程序就应该进行处理,给用户提示或者干脆什么也不作,在这里若是用了unchecked exception的话,不进行捕捉的话,你的程序就可能挂了,由于他是由程序自行处理的。debug

    再好比获取url内容时候,链接超时你应该进行处理一下,或者提醒用户,或者自行再连接一遍,这就用到了checked exception。继承

    至于unchecked exception,能够参考java的ArrayIndexOutOfBoundsException,这个是由于程序员的处理不当而发生的,而不能归结于用户操做不当形成的,因此说是程序的错误,因此用unchecked exception比较合理。开发

    总结:源码

        是程序员形成的异常,则构造为unchecked exception;使用户使用不当形成的异常,构造为checked exception。主要缘由是unchecked exception是不该该遗留下的,而应该在debug时解决。it

相关文章
相关标签/搜索