关于JAVA
麻烦哪位大神用通俗易懂的语言描述下异常,包括:异常处理,异常类,Error类,Exception类以及自定义异常。能细化一点最好...
麻烦哪位大神用通俗易懂的语言描述下异常,包括:异常处理,异常类,Error类,Exception类以及自定义异常。能细化一点最好
展开
4个回答
展开全部
异常处理:通俗的说,异常处理就是你知道在执行一段代码时,可能会出现问题,然后你事先设定了一个地方和一段代码,当出现了问题时,程序会跳到这个地方,执行这些操作。如果没有异常处理机制,那你就要频繁地根据错误的类型返回相应的错误码,然后由调用者根据错误码来进行相应的错误处理,就会非常麻烦,因此现代基本所有的高级语言,都建立了异常处理机制,以减轻程序员的负担。
异常类:java中所有的异常都有一个根,就是Throwable类,所有的异常类都扩展这个类。在Throwable之下,分有两个主要的异常大类:Error和Exception,前者是描述由代码之外引起的问题,比如链接错误,内存不足等等,后者是表示执行代码之中发生的一些问题,比如想读文件,文件不存在,数组越界等。
Error类:上面已介绍了一点Error类,它下面有很多子类,分别描述了不同种可能的意外情况,你可以参看jdk文档来研究一下这些子类
Exception类:Exception中描述的是由代码执行引发的异常情况,同样它下面的众多子类,也是分别描述了各种情况,这些子类可以分为两大类,一类是RuntimeException类,其余子类归为另一类。RuntimeException中是指一些出了错误,难以恢复的问题,比如数组越界(ArrayIndexOutOfBoundsException),空指针(NullPointerException)等等,另一类往往是可以恢复的。
这里还要说一点,就是Error类,RuntimeException类,以及它们的子类,称为
unchecked Exception,而上面提到的Exception的除RuntimeException类之外的其他异常子类,称为checked Exception,这两个的区别就是,checked Exception是必须要被捕获的,不管你是用try catch语句,还是throw语句。如果你没有捕获,编译是通不过的,而unchecked Exception,要么不可预见(比如谁能知道什么时候虚拟机内存不足呢),要么可能每段代码都可能出现(比如空指针,数组越界),那你总不能为每一段代码都写一个try catch语句吧,因此,这一类叫做unchecked Exception的异常,就不用写捕获语句(当然你如果捕获了,也是没问题的)。checked Exception是只在特定代码执行情况下才会出现的,比如你没有试图打开一个文件,就不可能会出现FileNotFoundException,而空指针这些异常,是随时可能出现的。
自定义异常,写起来非常简单,一般只要扩展Exception,复写其中一些方法就可以了,注意,自定义异常一般都是checked Exception,即在程序中必须显示捕获或抛出。
异常类:java中所有的异常都有一个根,就是Throwable类,所有的异常类都扩展这个类。在Throwable之下,分有两个主要的异常大类:Error和Exception,前者是描述由代码之外引起的问题,比如链接错误,内存不足等等,后者是表示执行代码之中发生的一些问题,比如想读文件,文件不存在,数组越界等。
Error类:上面已介绍了一点Error类,它下面有很多子类,分别描述了不同种可能的意外情况,你可以参看jdk文档来研究一下这些子类
Exception类:Exception中描述的是由代码执行引发的异常情况,同样它下面的众多子类,也是分别描述了各种情况,这些子类可以分为两大类,一类是RuntimeException类,其余子类归为另一类。RuntimeException中是指一些出了错误,难以恢复的问题,比如数组越界(ArrayIndexOutOfBoundsException),空指针(NullPointerException)等等,另一类往往是可以恢复的。
这里还要说一点,就是Error类,RuntimeException类,以及它们的子类,称为
unchecked Exception,而上面提到的Exception的除RuntimeException类之外的其他异常子类,称为checked Exception,这两个的区别就是,checked Exception是必须要被捕获的,不管你是用try catch语句,还是throw语句。如果你没有捕获,编译是通不过的,而unchecked Exception,要么不可预见(比如谁能知道什么时候虚拟机内存不足呢),要么可能每段代码都可能出现(比如空指针,数组越界),那你总不能为每一段代码都写一个try catch语句吧,因此,这一类叫做unchecked Exception的异常,就不用写捕获语句(当然你如果捕获了,也是没问题的)。checked Exception是只在特定代码执行情况下才会出现的,比如你没有试图打开一个文件,就不可能会出现FileNotFoundException,而空指针这些异常,是随时可能出现的。
自定义异常,写起来非常简单,一般只要扩展Exception,复写其中一些方法就可以了,注意,自定义异常一般都是checked Exception,即在程序中必须显示捕获或抛出。
展开全部
异常是程序执行时遇到的任何错误情况或意外行为。
异常处理就是将由于客户的错误行为导致的错误..比如输入错误..以客户能看懂的形式返回给用户..毕竟你给他打印个错误信息他肯定看不懂..还要将一些无法估计的因素造成的错误能够正确返回给用户一个结果..
比如由于程序数据库出问题啊..或者其他外力..导致程序无法正确运行的时候..你肯定不能让程序死在那..要给客户一个反馈..
处理错误的方法有很多流行方法
一般方法是把程序处理代码段分散到系统代码中,在可能发生错误的地方处理错误
优点:便于程序员能够条理的看到程序中异常的处理
缺点:异常处理程序“搅乱”代码,程序员很难关心程序本身能否正常完成功能,而只关心了性能。 所以thinking in java 里说刚开始觉得java的异常处理机制很完美..因外他貌似能处理所有错误..但慢慢的很厌恶异常处理..因为你需要花很多时间来处理错误..而真正去实现业务功能的时间却很少了..感觉很浪费..
至于那些类什么的..慢慢你就知道是什么意思了..
给你推荐个网址..
异常处理就是将由于客户的错误行为导致的错误..比如输入错误..以客户能看懂的形式返回给用户..毕竟你给他打印个错误信息他肯定看不懂..还要将一些无法估计的因素造成的错误能够正确返回给用户一个结果..
比如由于程序数据库出问题啊..或者其他外力..导致程序无法正确运行的时候..你肯定不能让程序死在那..要给客户一个反馈..
处理错误的方法有很多流行方法
一般方法是把程序处理代码段分散到系统代码中,在可能发生错误的地方处理错误
优点:便于程序员能够条理的看到程序中异常的处理
缺点:异常处理程序“搅乱”代码,程序员很难关心程序本身能否正常完成功能,而只关心了性能。 所以thinking in java 里说刚开始觉得java的异常处理机制很完美..因外他貌似能处理所有错误..但慢慢的很厌恶异常处理..因为你需要花很多时间来处理错误..而真正去实现业务功能的时间却很少了..感觉很浪费..
至于那些类什么的..慢慢你就知道是什么意思了..
给你推荐个网址..
参考资料: http://tech.ccidnet.com/art/3737/20041021/516491_1.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
李刚的《疯狂JAVA讲义》通俗易懂,去看看吧。学习要主动,自己思考
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
找本书看,不好吗?
Java编程思想的异常处理章节,讲的很清楚。
Java编程思想的异常处理章节,讲的很清楚。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询