设为首页 加入收藏

TOP

Java异常机制深入理解(二)
2019-09-03 02:45:41 】 浏览:118
Tags:Java 异常 机制 深入 理解
捕获它,也没有用throws子句声明抛出它,也会编译通过。


非运行时异常 (编译异常):是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常。


通过上面对异常的解释,现在应该对异常有一定的了解。下面来说明在java中是如何处理异常的。


try{} 代码块用于执行可能存在异常的代码,catch(异常类型  异常对象的名称){}代码块用于捕获并处理异常。


try{
    //有可能出现异常的代码段1
    //有可能出现异常的代码段2
}catch(异常类型 e){
    //处理异常的代码段3
}
//代码段4


处理1.2.1的两数相除问题的demo:


public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        try{
            System.out.println("请输入一个被除数:");
            int num1=sc.nextInt();
            System.out.println("请输入一个除数:");
            int num2=sc.nextInt();
            int result=num1/num2;
        }catch(Exception e){
            System.out.println("在此处处理异常!");
        }
        System.out.println("程序运行结束");


}


第一种:没有遇到异常,即正常执行



第二种:匹配到异常



在try{}中的代码遇到异常时,会与catch()中括号里的异常进行比对,如果遇到的异常时属于catch的异常就会执行catch块中的代码,让后执行try-catch块后面的代码


第三种:匹配不到异常


 


try{} 代码块用于执行可能存在异常的代码,catch{}代码块用于捕获并处理异常。


finally{} 代码块用于回收资源(关闭文件、关闭数据库、关闭管道)的代码。finally代码块不管是否出现异常,都必须???行( finally块唯一不执行的情况System.exit(0) jvm正常退出。


第一种:catch块没有return语句


(1)没有遇到异常:


try块内的代码——>finally块内的代码——>finally块后的代码


(2)遇到异常并匹配到异常:


try块内的代码——>catch块内的代码——>finally块内的代码——>finally块后的代码


public class Test01 {
    public static void main(String[] args) {
        try {
            int a=1/0;
            System.out.println("try");
        } catch (Exception e) {
            System.out.println("catch");
        }finally {
            System.out.println("finally");
        }
        System.out.println("程序正常运行结束");
    }
}


结果:


(3)遇到异常却没有匹配到异常:


try块内的代码——>finally块内的代码——>程序中断运行


public static void main(String[] args) {
    try {
        int a=1/0;//会抛出ArithmeticException
        System.out.println("try");
    } catch (NullPointerException e) {
        System.out.println("catch");
    }finally {
        System.out.println("finally");
    }
    System.out.println("程序正常运行结束");
}


结果:


第二种:catch块有return语句


(1)没有异常


try块内的代码——>finally块内的代码——>try块内的return语句


public class Test01 {
    public static int test() {
        try {
            int a=2*2;
            System.out.println("try");
            return a;
        } catch (Exception e) {
            System.out.println("catch");
            return 0;
 

首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇为什么说Java只有值传递? 下一篇关于单例模式及其Java实现

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目