Java Day 26(详细语法见课件)

异常机制

        基本概念

  • Java.lang.Throwable类是Java语言中错误(Error)和异常(ExceptIons)的超类
  • Error类是Java虚拟机无法解决的严重错误,无法通过编码解决
  • Exception类描述因编程错误或者严重错误导致的轻微错位u,可以通过编码解决,如0作为除数

        异常的分类

          Exception类是所有异常的超类

  1. RuntimeException:运行时异常/非检测性异常
  2. IOException和其他异常:检测性异常(在编译阶段能被编译器检测出来)
public class ExceptionTest {
    public static void main(String[] args) {
        //非检测性异常
        System.out.println(5/0); //编译正常,运行时发生算数异常,下面的代码不会执行
        //检测性异常
        //Thread.sleep(millis:1000);//编译阶段报错, 不处理无法到运行阶段
    }
}

        RuntimeException类的主要子类

  •         ArithmeticException类:算数异常
  •         ArrayIndexOutOfBoundsException类:数组下标越界异常
  •         NullPoerException:空指针异常
  •         ClassCastException:类型转换异常
  •         NumberDFormatException:数字格式异常 

                对应异常的避免

import java.io.IOException;

public class ExceptionPreventTest {
    public static void main(String[] args) {
        int ia = 10;
        int ib = 0;
        if(0!=ib) {
            System.out.println(ia / ib); //会发生算术异常
        }
        int[] arr = new int[5];
        int pos = 5;//数组下标越界异常
        if(0<=pos && pos <5){
            System.out.println(arr[pos]);
        }
        String str = null;//空指针异常
        if(null!=str) {
            System.out.println(str.length());
        }
        Exception ex = new Exception();
        if(ex instanceof IOException) {
            IOException ie = (IOException) ex;//类型转换异常
        }
        String str2 = "123a";//数字格式异常
        if(str2.matches("\\d+")) {
            System.out.println(Integer.parseInt(str2));
        }
        System.out.println("程序正常结束");

    }
}

        异常抛出             

                 finally的笔试考点

Java Day 26(详细语法见课件)_第1张图片

 这个方法的执行结果是2(return表明返回相应的值并结束程序,但由于finally语句块必须要执行,所以return1 不能执行)

不建议在main方法中抛出异常

Java Day 26(详细语法见课件)_第2张图片

        自定义异常

                创建异常类

Java Day 26(详细语法见课件)_第3张图片

                 在Person类中使用

Java Day 26(详细语法见课件)_第4张图片Java Day 26(详细语法见课件)_第5张图片

        小结

Java Day 26(详细语法见课件)_第6张图片 

 

你可能感兴趣的:(java,jvm,开发语言)