黑马程序员—异常及其处理部分基础知识总结

来源:互联网 发布:淘宝助理5.4版本下载 编辑:程序博客网 时间:2024/06/04 18:22
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------


异常及其处理部分基础知识总结

1、异常类在catch语句中的撰写顺序

       异常处理格式中,我们是可以将catch语句像else if一样列举很多的,因为我们要try{}的方法体中也许存在中诸多安全隐患,而关于可能产生的异常和处理方式在实际应用中,我们我们抛出异常时建议越详细越好,而不是用Exception甚至Throwable来一概而论。因为这样可以让我们或者程序的使用者在解决问题的时候思路更加清楚和简洁,所以这就需要我们尽量的去预估可能运行时可能产生的异常,包括自定义异常,而将父类异常放在:try catch catch……处理结构的最下方如:

try{}

catch{}(孙类)

catch{}(父类)

catch{}(爷类)


2、throws和throw关键字

       这里就不再赘述他们的应用格式的区别了,他们的表现的思想主要有一个区别在于,throws关键字在方法声明处表示不处理异常而是抛出异常类,而throw则在方法体中手动抛出一个异常,举一个两者结合使用的例子分享给大家:

class Math{public int div(int i,int j)throws NumberFormatException{System.out.println("----计算开始----");int temp=0;try{temp=i/j;}catch(NumberFormatException e){throw e;}finally{System.out.println("----计算结束----");}return temp;}}public class Demo{public static void main(String[] args){Math m =new Math();try{System.out.println("除法:"+m.div(10,0));}catch(NumberFormatException e){System.out.println("抛出异常:"+e);}}}

        这里可以发现,无论是否存在异常,我们都会打印出计算结束的字样,而这种结构也将异常给予最终的调用者去处理

 


       在此补充下,finally作为异常的同意出口,一般用于执行关闭某些资源或断开连接的命令。

3、Exception类与RuntimeException

       RuntimeException及其类的异常一经抛出是不必经过try catch处理的,所谓不必只是程序的没有对此存在硬性要求,因为往往这类问题出现在运行时的参数设置问题上,比如数组的脚标的越界,除零等等。个人认为之所以程序不要求这类问题提前处理是为了将此问题交给JVM(java虚拟机),这样就可以中断程序了,因为它们往往导致的结果很严重,不易去跳过。当然如果预估出的问题在你的承受范围内,为了保证程序的运行,建议还是加上try catch。




0 0
原创粉丝点击