有try catch 的那种是运行时异常还是飞非运行时异常
2个回答
展开全部
原则上都可以。我对异常处理的习惯是只捕捉非运行期异常,我这样处,运行期异常和非运行期异常理的原因主要基于这个想法的区别是,非运行期异常是程序员所无法避免的,所以语法上强制你进行处理。而运行期异常的产生是由于程序员的错误而产生的。根据这个原则可以看出,运行期异常一般都是由于程序的bug而产生的,所以对运行期异常的处理一般是把这个异常消除,而不是进行捕捉。
举个简单的例子,你在某断程序中需要调用A getA(String b);这样一个方法,而这个方法的内部大致是这样实现的,如果你给它传的参数a符合要求,它就返回一个A实例,如果a不符合条件,就返回null,现在你这样调用了方法A a=getA(b);此时a可能是null,如果你直接使用a就会抛出空指针异常,一般情况下你可以写一个if语句判断一下,如if(a==null),也可以try,catch一个空指针异常,我是比较习惯先判断一下来防止异常的发生。
不过具体问题还是得具体分析,有时候还是直接捕捉运行期异常比较妥当。况且我也不认为jdk中的异常分类就绝对妥当。
我一直感觉java中异常处理还是比较难的一块内容,说他难并不是它的语法难,而是难在如何对异常进行合理利用,比如什么时候该抛异常,该抛什么异常,什么时候该捕捉异常,什么时候又该把异常重新向上抛,我到现在还一直在摸索与实践。
举个简单的例子,你在某断程序中需要调用A getA(String b);这样一个方法,而这个方法的内部大致是这样实现的,如果你给它传的参数a符合要求,它就返回一个A实例,如果a不符合条件,就返回null,现在你这样调用了方法A a=getA(b);此时a可能是null,如果你直接使用a就会抛出空指针异常,一般情况下你可以写一个if语句判断一下,如if(a==null),也可以try,catch一个空指针异常,我是比较习惯先判断一下来防止异常的发生。
不过具体问题还是得具体分析,有时候还是直接捕捉运行期异常比较妥当。况且我也不认为jdk中的异常分类就绝对妥当。
我一直感觉java中异常处理还是比较难的一块内容,说他难并不是它的语法难,而是难在如何对异常进行合理利用,比如什么时候该抛异常,该抛什么异常,什么时候该捕捉异常,什么时候又该把异常重新向上抛,我到现在还一直在摸索与实践。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询