A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭利超 高级黑马   /  2013-3-16 11:00  /  1244 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ♂超√/kun 于 2013-3-17 11:15 编辑

看了3天异常 感觉看的很慢了 也很仔细 但是会看了 不知道到底有什么用啊
异常什么时候用 怎么用 求大神总结!


自己又看了一遍 以下为大神总结:
  1. 异常:
  2. 是什么?是对问题的描述。将问题进行对象的封装。
  3. ------------
  4. 异常体系:
  5. Throwable
  6. |--Error
  7. |--Exception
  8. |--RuntimeException

  9. 异常体系的特点:异常体系中的所有类以及建立的对象都具备可抛性。
  10. 也就是说可以被throw和throws关键字所操作。
  11. 只有异常体系具备这个特点。


  12. --------------
  13. throw和throws的用法:

  14. throw定义在函数内,用于抛出异常对象。
  15. throws定义在函数上,用于抛出异常类,可以抛出多个用逗号隔开。


  16. 当函数内容有throw抛出异常对象,并未进行try处理。必须要在函数上声明,都在编译失败。
  17. 注意,RuntimeException除外。也就说,函数内如果抛出的RuntimeExcpetion异常,函数上可以不用声明。
  18. --------------


  19. 如果函数声明了异常,调用者需要进行处理。处理方法可以throws可以try。

  20. 异常有两种:
  21. 编译时被检测异常
  22. 该异常在编译时,如果没有处理(没有抛也没有try),编译失败。
  23. 该异常被标识,代表这可以被处理。
  24. 运行时异常(编译时不检测)
  25. 在编译时,不需要处理,编译器不检查。
  26. 该异常的发生,建议不处理,让程序停止。需要对代码进行修正。



  27. --------------
  28. 异常处理语句:
  29. try
  30. {
  31. 需要被检测的代码;
  32. }
  33. catch ()
  34. {
  35. 处理异常的代码;
  36. }
  37. finally
  38. {
  39. 一定会执行的代码;
  40. }

  41. 有三个结合格式:
  42. 1. try
  43. {

  44. }
  45. catch ()
  46. {
  47. }

  48. 2. try
  49. {

  50. }
  51. finally
  52. {

  53. }


  54. 3. try
  55. {

  56. }
  57. catch ()
  58. {
  59. }
  60. finally
  61. {

  62. }



  63. 注意:
  64. 1,finally中定义的通常是 关闭资源代码。因为资源必须释放。
  65. 2,finally只有一种情况不会执行。当执行到System.exit(0);fianlly不会执行。

  66. --------------

  67. 自定义异常:
  68. 定义类继承Exception或者RuntimeException
  69. 1,为了让该自定义类具备可抛性。
  70. 2,让该类具备操作异常的共性方法。

  71. 当要定义自定义异常的信息时,可以使用父类已经定义好的功能。
  72. 异常异常信息传递给父类的构造函数。
  73. class MyException extends Exception
  74. {
  75. MyException(String message)
  76. {
  77. super(message);
  78. }
  79. }

  80. 自定义异常:按照java的面向对象思想,将程序中出现的特有问题进行封装。
  81. --------------


  82. 异常的好处:
  83. 1,将问题进行封装。
  84. 2,将正常流程代码和问题处理代码相分离,方便于阅读。


  85. 异常的处理原则:
  86. 1,处理方式有两种:try 或者 throws。
  87. 2,调用到抛出异常的功能时,抛出几个,就处理几个。
  88. 一个try对应多个catch。
  89. 3,多个catch,父类的catch放到最下面。
  90. 4,catch内,需要定义针对性的处理方式。不要简单的定义printStackTrace,输出语句。
  91. 也不要不写。
  92. 当捕获到的异常,本功能处理不了时,可以继续在catch中抛出。
  93. try
  94. {
  95. throw new AException();
  96. }
  97. catch (AException e)
  98. {
  99. throw e;
  100. }

  101. 如果该异常处理不了,但并不属于该功能出现的异常。
  102. 可以将异常转换后,在抛出和该功能相关的异常。

  103. 或者异常可以处理,当需要将异常产生的和本功能相关的问题提供出去,
  104. 当调用者知道。并处理。也可以将捕获异常处理后,转换新的异常。
  105. try
  106. {
  107. throw new AException();
  108. }
  109. catch (AException e)
  110. {
  111. // 对AException处理。
  112. throw new BException();
  113. }

  114. 比如,汇款的例子。


  115. 异常的注意事项:
  116. 在子父类覆盖时:
  117. 1,子类抛出的异常必须是父类的异常的子类或者子集。
  118. 2,如果父类或者接口没有异常抛出时,子类覆盖出现异常,只能try不能抛。



  119. 参阅
  120. ExceptionTest.java 老师用电脑上课
  121. ExceptionTest1.java 图形面积。
















  122. class
  123. {
  124. public static void main(String[] args)
  125. {
  126. int x = 0;
  127. try
  128. {
  129. x = 4;
  130. }
  131. catch ()
  132. {
  133. }
  134. finally
  135. {
  136. System.out.println("x="+x);
  137. }

  138. }
  139. }
复制代码

4 个回复

倒序浏览
       进行异常处理是为了识别错误和捕获运行时错误。程序发生异常时,如果程序中未提供适当的异常处理机制,程序

将会终止并将控制权交给操作系统。。。通俗讲哈,就是不能收回为某个程序分配的内存,以

供其他程序使用。要阻止此类情况的发生,需要一个有效的异常处理机制,将先前系统分配的所有资源都回收。
回复 使用道具 举报
具体怎么用,,,看视频吧,比较详细,,

点评

看了我多看几遍吧  发表于 2013-3-16 11:52
回复 使用道具 举报
Java异常处理的目之一在于:让我们的程序在出现运行时错误时不至于崩溃,仍然可以继续运行,直到正常结束。
另外还可以避免很多问题,比如连接数据库之后出现异常导致数据库无法关闭,用finally就可以关闭了
毕竟代码在运行过程中肯定会产生各种各样的不可预测的问题,那么就要根据这些可能的问题逐一对应适当的解决办法,这样才不至于程序过于脆弱缺乏实用性。

点评

嗯 貌似调起了我的记忆了 我在看一遍视频区  发表于 2013-3-16 11:53
回复 使用道具 举报
本帖最后由 黑马-郑玉元 于 2013-3-16 11:53 编辑

首先你要知道异常的分类,有编译异常和运行异常。编译异常是必须要先进行处理才能编译成功的,那样就必须要用异常了!
其实有些异常我们可以用条件来判断可以避免,像那个除数为零的就可以用条件加以判断来避免,但那样做使得将逻辑代码与判断操作混到一起,这样会导致程序不清晰。为了使代码更加的清晰明了,我们就用了异常,就不会将逻辑代码与判断操作放在一起!

点评

顶  发表于 2013-3-16 11:55
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马