异常

异常的概念

  1. 异常是程序在运行期间发生的不正常的事件,它会中断指令的正常执行流程
  2. 设计良好的程序应该在异常发生时,提供处理这些不正常事件的方法,使程序不会因为异常的发生而中断或产生不可预见的结果。
  3. Java语言使用异常处理机制,为程序提供异常处理的能力
    异常分类
    Throwable 1.Error(错误)
    2.Excepion【1.受检异常 2.非受检异常】
    异常的分类
    *从继承角度
    错误(Error):JVM系统内部错误或资源耗尽等严重情况,属于JVM需要负担的责任
    *这一类异常事件无法恢复或不可捕获,将导致应用程序中断,程序员对其不做处理
    异常:因编程错误、不严谨或偶然的外在因素导致的问题
    所有异常的父类,其子类对应了各种各样可能出现的异常事件
    程序员通常可以处理,可以显示地声明或捕获
    这类异常如果处理合理,程序有机会恢复至正常云行状态
    从处理的必要性角度:
    非受检(unchecked)异常:编译器不要求必须处理的异常,也叫运行时异常。
    1.指程序的逻辑错误,是程序员应该避免的,会在程序运行过程中触发:
    2.错误的类型转换:java.lang.ClassCastException
    3.数组下标越界:java.lang.ArrayIndexOutOfBoundsException
    4.空指针访问:java.lang.NullPointerException
    5.算术异常(除0溢出):java.lang.ArithmeticException
    受检(checked)异常:编译器要求必须处理的异常(2种方式)。
    1.没有找到指定名称的类:java.lang.ClassNotFoundException
    2.访问不存在的文件:java.io.FileNotFoundException
    3.操作文件时发生的异常:java.io.IOException
    4.操作数据库时发生的异常:java.sql.SQLException

异常处理机制

     1. Java提供了处理异常的关键字:try,catch,finally,throw,throws
     2. 程序在执行过程中,如果出现异常,会自动生成一个异常类对象,该异常对象将被自动                提交给JVM,这个过程称为抛出(throw)异常。
     3. 当JVM接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常和处理异常。
     4. 如果JVM找不到可以捕获异常的代码,则运行时系统将终止,相应的Java程序也将退出。

    **处理异常的2种方式**
    自身捕获处理(try....catch)
        当发生异常时,由自身方法捕获,并提供处理代码
    声明抛出(throws ,throw)
        当某段程序有可能发生异常时,则在声明中抛出异常,如果运行发生异常,则自动抛给调用者处理,如果调用者仍然没有处理,则一直往上抛出。
    public static void method3(){
        String str = null;
        int[] array ={};
        try{
            int a = 10/0;
            array[1] = 10;
            int length = str.length();
        }catch(NullPointerException  e){
        System.out.println("空指针异常");
        }catch(ArrayIndexOutOfBoundsException e){
        System.out.println("数组索引越界");
        }catch(Exception e){
        System.out.println("遇到一场了");
        }finally{
        System.out.println("finally......");
        }
        System.out.println("方法结束了");
}
___________________________________________________________________

    public static void method4(){

    try{
    FileInputStream input = new FileInputStream("D:/b.txt");
   }catch(FileNotFoundExpection e){
    //e.printStackTrace();

    //获取异常信息
    System.out.println(e.getMessage());
    //获取异常原因
    System.out.println(e.getCause);
}

}   

    //throws关键字
    public static void method5()throws FileNotFoundException{

        FileInputStream input = new FileInputStream("D:/aaa");
}

throw关键字

//创建异常类
public  class UserException extends Exception{

        public UserException(String message){
            super(message);
    }

}

//判断是否异常
public  class Login{

    public void login(String name,String pwd) throw UserException{

    if(name.equals("admin")&&pwd.equals("123456")){
        System.out.println("登录成功");
}else{
    UserExpection userExceptin = new UserException("用户名或者密码不对");
    throw  userExpection;
        }

    }

}

//创建main函数判断密码和用户名是否正确

public class Demo{
    public static void main(String[] args){

    Login  login = new  Login();
    try{
    login.login("admin","123456");
}catch(UserExption e){

    System.out.println(e.getMessage());
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值