Java入门笔记(六)异常处理

Java入门笔记目录

异常处理

异常的写法

抛出异常 throw

运行时系统在调用栈中查找,从生成异常的方法开始进行回溯,知道找到

捕获catch异常的代码

try{
      ...
} catch(IOException e) {
      e.printStackTrace();
}
 catch(AnotherException e) {
      e.printStackTrace();
} finally {
      异常处理语句组;// 无论有没有异常都要执行
}

异常的分类

Error类

JVM错误,一般不管

Exception 异常

构造方法
  1. public Exception();

  2. public Exception(String message);

  3. Exception(String message, Throwable cause);

方法
  1. getMessage()

  2. getCause()

  3. printStackTrace()

多个异常的处理

  1. 子类异常写在父类异常前面

  2. 即便在try中有break return语句,finally语句都会执行

受检的异常

  1. RuntimeException及其子类可以不明确处理,否则就是受检的异常,受检的异常要求明确进行语法处理,要么catch,要么throw

  2. throw异常时,在方法的签名后面用throws xxx来声明,在子类中,如果要覆盖父类的一个方法,若父类中的方法声明了throws异常,那么子类的方法也可以throws异常(只能更具体,不能更一般)

try-with-resource

对于AutoCloseable的变量,调用close()的方法

try(类型 变量名 = new 类型()){
      ...
}

自定义异常

重抛异常与异常链接

catch后的处理机制

  1. 将当前捕获的异常再次跑出 throw e

  2. 重新生成一个异常并抛出 throw new Exception("message")

  3. 重新生成一个异常并抛出 该异常中包含了当前异常的信息如 throw new Wxception("some message", e),可以让别人使用e.getCause()看到当前的异常,也叫异常的链接

断言与测试

断言 assertion

  1. 断言:assert 逻辑表达式[:信息];

  2. 如果断言表达式不为true,就会产生异常,并且输出相关的错误信息

  3. 只有在JDK1.4及以上的版本才可以使用断言,在早期JDK版本中,要通过-source选项来指明版本;在运行时,要使assert起作用,则在运行时使用选项-ea(enableeassertions)

测试及JUnit

  1. JUnit单元测试框架:http://www.junit.org

  2. 在Eclipse中

  右键-New-JUnit Test Case,生成testClass文件

  右键-Run as - JUnit Test

  1. 使用@Test来标记测试函数

   fail(信息)

   assertEquals(运行结果,预期结果)

   assertNull(参数)

调试

错误分类

  1. 语法错误Synatax error:编辑、编译器发现

  2. 运行错误Runtime error:异常处理机制

  3. 逻辑错误Logic error:调试,单元测试

   项目右键debug as...

调试手段

  1. 断点 breakpoint:让程序停止

  2. 跟踪 trace:看程序的流程

  3. 监视 watch:看变量的变化

posted @ 2020-05-14 22:10  陌良  阅读(199)  评论(0)    收藏  举报