首页 > 代码库 > Java异常处理

Java异常处理


五个关键字  和两个结构

两个结构:
 1.Throwable
   Error  表示错误
   Exception 异常
 2.Exception
   RuntimeException(包括其子类)
   非RuntimeException(Checked异常)
   
5个关键字:
 
 try, catch, finally,  throws , throw
 处理异常的结构:
 package day5;

import java.util.Scanner;

public class TestException {

 private static Scanner scanner;

 public static void main(String[] args) {
  scanner = new Scanner(System.in);
  String num1=scanner.next();
  String num2=scanner.next();
  try
  {
   //System.out.println(num1/num2);
   int nu1=Integer.parseInt(num1);
   int nu2=Integer.parseInt(num2);
   
   System.out.println(nu1/nu2);
   
  }catch(ArithmeticException e)
  {
   //e.printStackTrace();
   System.out.println("出书不能为零,请重新输入!");
  }
  catch(NumberFormatException ee)
  {
   System.out.println("必须输入数值型字符");
  }
  catch(Exception eee)
  {
   System.out.println("出现其他异常");
  }
  finally
  {
   System.out.println("资源已释放");
  }
 }

}
 
 异常的分类:
  1. RuntimeException(包括其子类)
   特点:  编译时不检查,在运行期才去检查
   
  2. 非RuntimeException(Checked异常)
   特点:  编译时就会检查,
      处理方式:
       1.  在该代码所在方法上 声明跑出异常  throws
       2.  把该代码try{ // here //}catch(Exception e){}
 在方法上 声明抛出异常:
  
  方法后的圆括号后面   throws 异常类A,异常类B
  
  表明该方法不处理A,B异常,而是交给该方法的调用者去处理;
  
  JVM默认的处理方式:
   
   Throwable:
    void printStackTrace();//获取异常信息和 异常类型  异常的位置
    System.out.println(printStackTrace());//ERROR
    String getMessage();//得到的异常信息
    String toString(); //获取异常信息和 异常类型
 throw:
  throw  异常对象;
 若 throw 抛出的是 runtime异常:  所在的方法上不需要声明抛出
 若 throw 抛出的是  非runtime异常:  所在的方法上必须声明抛出异常;
 注意:
  方法复写:
   原则:  一同两小一大:
      一同:方法签名相同
      两小:
       1. 子类方法返回的类型可是父类方法返回类型的子类或相同类
       2. 子类不能抛出新的异常,子类不能抛出更多的异常;(有特殊的)
      一大: 子类方法的访问修饰符大于等于父类方法的访问修饰符
      
 finally:
  特点:  最终都会执行的语句块
   特殊情况:  退出JVM,  System.exit(1);//系统退出
 
 自定义异常:
  新建一个类继承与  Exception或 其子类
  提供一个无参构造方法和一个带一个String参数的构造方法
  
  实际开发中,更加喜欢使用 RuntimeException