异常处理
1.常见的异常类
(1).编译时异常:
1 OException:输入输出流异常 2 3 FileNotFoundException:文件找不到的异常 4 5 ClassNotFoundException:类找不到的异常 6 7 DataFormatException:数据格式化异常 8 9 NoSuchFieldException:没有匹配的属性异常 10 11 NoSuchMethodException:没有匹配的方法异常 12 13 SQLException:数据库操作异常 14 15 TimeoutException:执行超时异常
(2).运行时异常
1 RuntimeException:运行时异常 2 3 NullPointerException:空指针异常 4 5 ArrayIndexOutofBoundsException:数组越界异 6 7 ClassCastException:类型转换异常 8 9 IllegalArgumentException:非法的参数异常 10 11 InputMismatchException:输入不匹配
2.异常的处理方式
(1).try--catch--finally
1.该方式对异常进行了实质上处理,即用自定义形式来输出异常,而不是由系统自带的来进行
2.try表示要检查的可能出现异常的代码段
3.catch即具体处理异常,说明什么异常类,并进行处理
4.finally可有可无,用于异常处理后输出
5.finally一般用于放一些必须执行的语句,因为程序在处理抛出异常后,对之后在try中的语句都不会执行。
1 public static void test1() 2 { 3 try { 4 int a = 10, b = 0; 5 System.out.println(a/b); 6 } catch(ArithmeticException e) { 7 e.printStackTrace(); 8 } catch(Exception e) { 9 e.printStackTrace(); 10 } 11 finally { 12 System.out.println("异常已处理"); 13 } 14 }
(2).throws
本质上并未处理异常,只是将异常抛给上一层来进行处理
1 public static void main(String[] args) 2 { 3 try{ 4 test1(); 5 } catch(Exception e) { 6 e.printStackTrace(); 7 } 8 } 9 10 public static void test1() throws FileNotFoundException,IOException 11 { 12 File file = new File("hello.txt"); 13 FileInputStream fis = new FileInputStream(file); 14 int data = fis.read(); 15 fis.close(); 16 }
3.异常类
(1).要声明版本号
(2).从已有的异常类上继承,并调用父类的构造函数
1 public class MyException extends RuntimeException { 2 //确定版本号 3 static final long serialVersionUID = -7034897193246939L; 4 5 public MyException() 6 { 7 super(); 8 } 9 10 public MyException(String msg) 11 { 12 super(msg); 13 } 14 }
4.throws和throw的区别:
(1).throws是去转移异常的处理者
(2).throw是去抛出一个异常类
1 throw ExceptionObject;
throw应用的一个实例:
1 public static void Test3() 2 { 3 Scanner input = new Scanner(System.in); 4 int a = input.nextInt(); 5 int b = input.nextInt(); 6 if (b == 0) 7 { 8 try { 9 throw new Exception(); 10 } catch (Exception e) { 11 System.out.println("除数不能为0!"); 12 } 13 } 14 else 15 { 16 System.out.println(a / b); 17 } 18 }