异常

举报
brucexiaogui 发表于 2021/12/30 02:22:15 2021/12/30
【摘要】 异常   五个关键字 和两个结构 两个结构: 1. Throwable Error 表示错误 Exception 异常 2. Exception RuntimeException(包括其子类) 非RuntimeException(Checked异常) 5个关键字: try, ...

异常

 


  
  1. 五个关键字 和两个结构
  2. 两个结构:
  3. 1. Throwable
  4. Error 表示错误
  5. Exception 异常
  6. 2.
  7. Exception
  8. RuntimeException(包括其子类)
  9. 非RuntimeException(Checked异常)
  10. 5个关键字:
  11. try, catch, finally, throws , throw
  12. 处理异常的结构:
  13. try
  14. {
  15. }
  16. catch(异常类型 变量)
  17. {
  18. }
  19. try{
  20. }finally{
  21. }
  22. try{
  23. //存放可能出现异常代码
  24. }catch(异常类 变量)
  25. {
  26. 处理异常
  27. }finally{
  28. //最后会执行的代码
  29. }
  30. 异常的分类:
  31. 1. RuntimeException(包括其子类)
  32. 特点: 编译时不检查,在运行期才去检查
  33. 2. 非RuntimeException(Checked异常)
  34. 特点: 编译时就会检查,
  35. 处理方式:
  36. 1. 在该代码所在方法上 声明跑出异常 throws
  37. 2. 把该代码try{ // here //}catch(Exception e){}
  38. 在方法上 声明抛出异常:
  39. 方法后的圆括号后面 throws 异常类A,异常类B
  40. 表明该方法不处理A,B异常,而是交给该方法的调用者去处理;
  41. JVM默认的处理方式:
  42. Throwable:
  43. void printStackTrace();//获取异常信息和 异常类型 异常的位置
  44. System.out.println(printStackTrace());//ERROR
  45. String getMessage();//得到的异常信息
  46. String toString(); //获取异常信息和 异常类型
  47. throw:
  48. throw 异常对象;
  49. throw 抛出的是 runtime异常: 所在的方法上不需要声明抛出
  50. throw 抛出的是 非runtime异常: 所在的方法上必须声明抛出异常;
  51. throw&throws
  52. throws用于在方法上声明该方法不需要处理的异常类型。
  53. throw用于抛出具体异常类的对象。
  54. throwsthrow的区别:
  55. thorws用在方法上,后面跟异常类名,可以是多个异常类。
  56. throw用在方法内,后面跟异常对象,只能是一个。
  57. 注意:
  58. 方法复写:
  59. 原则: 一同两小一大:
  60. 一同:方法签名相同
  61. 两小:
  62. 1. 子类方法返回的类型可是父类方法返回类型的子类或相同类
  63. 2. 子类不能抛出新的异常,子类不能抛出更多的异常;(有特殊的)
  64. 一大: 子类方法的访问修饰符大于等于父类方法的访问修饰符
  65. finally:
  66. 特点: 最终都会执行的语句块
  67. 特殊情况: 退出JVM, System.exit(1);//系统退出
  68. ..main..
  69. {
  70. System.out.println(show());// 1 还是 2
  71. }
  72. public static int show(){
  73. int i = 1;
  74. try
  75. {
  76. return i;
  77. }finally{
  78. return i++;
  79. }
  80. }
  81. 自定义异常:
  82. 新建一个类继承与 Exception或 其子类
  83. 提供一个无参构造方法和一个带一个String参数的构造方法
  84. class MyException2 extends RuntimeException{
  85. public MyException2() {
  86. super();
  87. }
  88. /**
  89. *
  90. * @param message 表示异常描述 getMesasge();
  91. */
  92. public MyException2(String message) {
  93. super(message);
  94. }
  95. }
  96. class MyException1 extends Exception{
  97. public MyException1() {
  98. super();
  99. }
  100. /**
  101. *
  102. * @param message 表示异常描述 getMesasge();
  103. */
  104. public MyException1(String message) {
  105. super(message);
  106. }
  107. }
  108. public class MyExceptionDemo {
  109. public static void divide(int a, int b){
  110. if(b == 0){
  111. throw new MyException2("亲,除数不能为0");
  112. }
  113. }
  114. public static void main(String[] args) {
  115. try{
  116. divide(1,0);
  117. }catch(Exception e){
  118. String msg = e.getMessage();
  119. System.out.println("msg= " + msg);
  120. }
  121. }
  122. }
  123. 实际开发中,更加喜欢使用 RuntimeException

 

文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。

原文链接:brucelong.blog.csdn.net/article/details/81664415

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。