异常的概念:java程序在编译或运行过程出现的意外情况。 类型转换异常 数组越界异常 空指针异常 算术运算异常… Throwable–Error –Exception: 1.编译器异常Exception: 日期类型转换异常,文件找不到异常 转换异常:ParseException 文件找不到异常:FileNotFoundException 2.运行时异常RuntimeException:程序运行时出现的异常 类型转换异常:ClassCaxtException、 数组越界异常:ArrayIndexOutOfBoundException 空指针异常:NullPointerException 算术运算异常:ArithmeticException 数字格式化异常:NumberFormatException 例如: 0不能做除数 3/0 零不能作除数的异常 异常的处理: 异常的处理方式 1>抛出异常throws关键字 抛出异常只是把当前方法的异常,抛给了上一级地调用它的方法,最终还是要进行异常的处理 2>捕获处理 语法格式: try{ //可能出现异常的代码块 FileputStream in = new FileputStream(path); 一旦出现异常,下面的代码不会再执行 System.out,println(); }catch(Exception e){ e.printStrace(); }finally{ } 1.try…catch…是成对出现的:try必须有并且只能有一个 2.catch可以有一个也可以有多个 3.finally可以有也可以没有,有的话只能有一个,并且在异常处理末尾 3>异常可以嵌套获取 4>自定义异常类: 1.自定义运行时异常 自定义类继承:RuntimeException 实现带参构造方法: public class NumberOutException extends RuntimeException{ public NumberOutException(String msg){ super(msg); } } public static void main(String[] args){ Scanner sc = new Scanner(System.in); int score = sc.nextInt(); if(score > 100 || score < 0){ throw new NumberOutException("用户输入分数错!"); } } 2.自定义编译器异常 继承:Exception public class NumsOutException extends Exception{ public NumsOutException(String msg){ super(msg); //调用父类的构造方法 } } 1.捕获异常 try{ }catch(NumsOutException e){ } 2.抛出异常 throw关键字 1.在方法外面抛出 throws NumsOutException 2.在代码段抛出 throw new NumsOutException(“异常信息”);