JAVA第六天

16 篇文章 0 订阅
11 篇文章 0 订阅

                    异常处理
异常处理
一.异常:程序运行过程中出现的不正常的现象
二.分类:     Throwable
             
  Exception(异常)    Error(错误)
  

运行时异常(RuntimeException)   编译时异常
异常和错误的区别:异常是程序员能够处理的情况,而错误一般是硬件,运行环境,设计等原因导致的,程序员不能去处理。
运行时异常和编译时异常的区别:一般来说,运行时异常为语法错误;而编译时异常为语法错误,连编译都无法通过。
三.异常处理---抓住异常
A)三个关键字:try catch finally
B)处理步骤:
I.   情况一:有了try-catch处理,程序运行过程中,出现了异常,并且处理时产生的异常和catch的异常匹配,进入catch处理,异常处理完成.
II.情况二:有了try-catch处理,程序运行过程中,没有出现异常,不会进入catch语句,异常处理结束。
III.情况三:有了try-catch处理,程序运行过程中,出现了异常e,进入catch块进行了匹配,没有匹配上,异常处理失败,程序终止运行。
IV.情况四:有了try-catch处理,并且catch块有多个,程序运行过程中,出现了异常e,进入catch1块进行匹配,如果匹配失败,继续匹配catch2块,依次向下...,如果catchN块匹配成功,进入catchN块,其他catch块忽略,异常处理成功。
V.情况五:finally块不管发生任何情况都会执行
例:package pro0730;

import java.util.InputMismatchException;
import java.util.Scanner;

public class DemoA {
    //情况一
        public void a(){
            try{//程序中的内容有可能出现异常
                int i=9/0;//这一段话出现了异常,进入catch处理语句,处理完成后,继续代码运行
                System.out.println(i);
            }catch (Exception e){//如果出现异,那么进入到catch红去处理
                System.out.println("除数不能为0");
            }
            System.out.println("程序结束");
        }
        //情况二
        public void b(){
            try{//程序中的内容有可能出现异常
                int i=9/3;//这一段话没有出现异常,不会进入catch语句,继续代码运行
                System.out.println(i);
            }catch (Exception e){
                System.out.println("除数不能为0");
            }
            System.out.println("程序结束");
            
        }
        //情况三
        public void c(){
            try{//程序中的内容有可能出现异常
                int i=9/0;//
                System.out.println(i);
            }catch (NullPointerException e){//异常与catch块处理的异常不匹配
                System.out.println("除数不能为0");
            }
            System.out.println("程序结束");
        }
        //情况四
        Scanner aka=new Scanner(System.in);
        public void d(){
            try{
                System.out.println("Input:");
                int a=aka.nextInt();
                int i=9/a;
                System.out.println(i);
            }catch(ArithmeticException e){
                System.out.println("除数不能为0");
            
            }catch(    InputMismatchException e){
                System.out.println("c数据输入异常");
            }
            System.out.println("程序结束");
        }
        //情况五
        public void e(){
            try {
                int []arr=new int[5];
                System.out.println(arr[8]);
            } catch (InputMismatchException e) {
                System.out.println(e.getMessage());
            }finally{//不换发生任何情况都会执行该语句内容
                System.out.println("我是finally里面的内容");
            }
            System.out.println("程序运行结束");
        }
        public static void main(String[] args) {
            new DemoA().a();
            new DemoA().b();
            new DemoA().c();
            new DemoA().d();
            new DemoA().e();
        }
}

C)注意:
1.异常处理代码书写顺序Try-catch=finally
2.Try为可能产生异常的块必须书写
3.Catch为处理异常的块,可以有1~N个
4.Finally可以书写可以不写,若写,只能有一个
5.如果有多个catch块,按照先子类后父类的原则书写,子类更具体,父类更通用。
四.异常处理---抛出异常
A)关键字:throw throws
例:package pro0730;

public class DemoB {
    
    public void a(int m)throws Exception{
        if(m>7){
            //认为有异常,抛出一个异常对象
            throw new Exception();
        }
    }
    public void b()throws Exception{
        a(8);
        
    }
    public void c(){
        try{
            b();
            System.out.println("没有异常");
        }catch(Exception e){
            System.out.println("处理了异常");
        }
        
    }
    public static void main(String[] args) {
        new DemoB().c();
    }

}

五.常见异常处理:java.lang.Exception;所有异常的父类
                 java.lang.RuntimeException;所有运行异常的父类
           java.lang.NullpointerException;空指针异常,调用了未经初始化的对象或者是不存在的对象
         java.lang.ClassNotFountException;指定的类不存在,类的路径不存在
         java.lang.ArithmeticException:数学异常,不符合数学运算规定
         java.lang.ArrayIndexOutOfBoundsException;数组下表异常,下表越界超过了范围
         java.lang.IllegalArgumentException;方法的参数错误,参数传递错误
         java.lang.ClassCastException;强制转换类型异常
         java.lang.NumberFormatException;数字转换异常
         java.lang.FileNotFoundException;//文件未找到异常
         java.lang.SQLException;操作数据库异常
         java.lang.IOException;输入输出异常
六.自定义异常:
例:package pro0730;

public class DemoC {
    
    public void a(int age) throws DemoCException{
        if(age <0||age>100){
            DemoCException e=new DemoCException();
            throw e;
        }
    }
    
    public static void main(String[] args) {
        try {
            new DemoC().a(102);
        } catch (DemoCException e) {
            // TODO Auto-generated catch block
            System.out.println(e.getMessage());
        }
    }

}

注意:final:方法修饰符,最终的类,属性,方法
finally:异常处理的关键字,最终地,代表异常是否处理都会执行的代码块
finalize:是object类的一个方法.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值