异常处理

异常处理

1异常处理基础

1.1异常定义:编译时无错误,运行时可能出现错误。发生异常了必须处理不然会终止程序的运行。

1.2继承关系:Object----Throwable---Exception---RuntimeException---接下来讲的都是运行时异常

1.3简单介绍错误error:java虚拟机内部错误导致,出现了程序员也无能为力,不可以在程序中捕获

1.4常见的六种异常:

一:java.lang.ArithmeticException算术异常

二:java.util.InputMismatchException输入不匹配异常

三:java.lang.ArrayIndexOutOfBoundsException数组下标越界异常

四:java.lang.NullPointerException空指针异常

五:java.lang.NumberFormatException数字格式化异常

六:ClassNotFound异常

1.5例子如下

 

package com.exception;
import java.util.Scanner;
public class Test {
 public static void main(String[] args){
  System.out.println("请输入被除数:");
  Scanner in=new Scanner(System.in);
  int num1=in.nextInt();
  System.out.println("请输入除数:");                 // 除数不为0
  int num2=in.nextInt();
  System.out.println("结果为"+num1/num2);

  int[] a=new int[10];
  a[10]=2;                                                                      //数组下标越界
  System.out.println(a[10]);

  String w=null;
  System.out.println(w.length());//空指针异常

       String c="1";
        String d="2";
        Integer e=new Integer(c);//记住将字符串转化为数字的方法
        Integer f=new Integer(d);
        System.out.println(c+d);//输出结果为12 而不是3 计算器中输入栏输入的数字其实为字符串 要转化为数字
       System.out.println(e+f);//输出结果为3      为正常的数字运算
  
  
 }

}

一;  当输入除数为0时

Exception in thread "main" java.lang.ArithmeticException: / by zero
 at com.exception.Test.main(Test.java:10)

二;当输入为非INT型则

Exception in thread "main" java.util.InputMismatchException

 

三:当数组下标越界时

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10

at com.exception.Test.main(Test.java:12)  a[10]=2;

四;当空的对象调用它的属性或方法时

Exception in thread "main" java.lang.NullPointerException
 at com.exception.Test.main(Test.java:17)

五;当把不是数字格式的字符串转化成数字时  如将上面改为 Sring c="1a";

Exception in thread "main" java.lang.NumberFormatException: For input string: "1a"

2异常处理措施

2.1 措施一:捕捉处理异常try{可能出现异常的语句}catch(捕捉到的异常类型 变量名){处理措施}catch(可能出现的另一种异常){}finally{一定要执行的语句}  当运行时没错误则不执行catch语句 

2.2实例

try{//异常捕捉try-catch-finally
   Scanner in=new Scanner(System.in);
      System.out.println("请输入被除数:"); //当输入不是整形时出现输入不匹配异常
      int num1=in.nextInt();
       System.out.println("请输入除数:");//除数不能为0否则出现算术异常
      int num2=in.nextInt();
      System.out.println("结果为"+num1/num2);
  }catch(ArithmeticException e){
   System.out.println("除数不能输入为0");
   e.printStackTrace();
  }catch(InputMismatchException e){
   System.out.println("请输入int型数字");
   e.printStackTrace();
  }finally{//不管有没有错都运行
   System.out.println("退出程序");
  }
  2.3措施二:抛出异常不处理 (本方法中自己不处理 让调用者其他方法处理)

public static void main(String[] args) throws ArrayIndexOutOfBoundsException,NullPointerException{

int[] a=new int[10];
  a[10]=2;//数组下标越界异常 只能是0-9
  System.out.println(a[10]);
  
  String w=null;
  System.out.println(w.length());//空指针异常

}

你可能感兴趣的:(异常处理)