1-4-异常处理

一、为什么要使用异常

异常的处理机制可以确保我们程序的健壮性,提高系统可用率

没人敢保证自己写的代码是完全正确的,所以异常的使用相当于给我们的程序买了一个保险,留了一个后门,不至于一句错误的代码导致整个系统挂掉吧!

二、异常体系

在这里插入图片描述

其中Error为错误,是程序无法处理的,如OutOfMemoryError、ThreadDeath等,出现这种情况你唯一能做的就是听之任之,交由JVM来处理,不过JVM在大多数情况下会选择终止线程。

而Exception是程序可以处理的异常。它又分为两种CheckedException(受捡异常),一种是UncheckedException(不受检异常)。其中CheckException发生在编译阶段,必须要使用try…catch(或者throws)否则编译不通过。而UncheckedException发生在运行期,具有不确定性,主要是由于程序的逻辑问题所引起的,难以排查

个人感觉出现异常的情况太多了,不同水平的程序员遇到的异常情况也不尽相同,所以我们还是看看自定义异常吧,整个感觉用的挺多的。

三、自定义异常

感觉听高大上的

Java确实给我们提供了非常多的异常,但是异常体系是不可能预见所有的希望加以报告的错误,所以Java允许我们自定义异常来表现程序中可能会遇到的特定问题,总之就是一句话:我们不必拘泥于Java中已有的异常类型。

  Java自定义异常的使用要经历如下四个步骤:

  1、定义一个类继承Throwable或其子类。

  2、添加构造方法(当然也可以不用添加,使用默认构造方法)。

  3、在某个方法类抛出该异常。

  4、捕捉该异常。

在 Java 中你可以自定义异常,编写自己的异常类时需要记住下面的几点。

所有异常都必须是 Throwable 的子类。
如果希望写一个检查性异常类,则需要继承 Exception 类。
如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。


/** 自定义异常 继承Exception类 **/
/** 自定义异常 继承Exception类 **/
class MyException extends Exception{
    public MyException(String s){

    }

    public MyException(String message, MyException e){
        super(message);
    }
}

public class HelloWorld {
    public void display(int i) throws MyException{
        if(i == 0){
            throw new MyException("该值不能为0.......");
        }
        else{
            System.out.println( i / 2);
        }
    }
    public static void main(String[] args) {
        HelloWorld t = new HelloWorld();
        try {
            t.display(0);
            System.out.println("---------------------");
        } catch (MyException e) {
            e.printStackTrace();
        }
    }
}

在这里插入图片描述

扫描二维码关注公众号,回复: 4988808 查看本文章

????????????? 为啥打印结果是这样的 ?????? 整个问题明天再纠结

四、常见异常处理方式

在异常中try快包含着可能出现异常的代码块,catch块捕获异常后对异常进行处理

public class HelloWorld {
    public static void main(String[] args) {
        String file = "D:\\exceptionTest.txt";
        FileReader reader;
        try {
            reader = new FileReader(file);
            Scanner in = new Scanner(reader);
            String string = in.next();
            System.out.println(string + "\n"+"不知道我有幸能够执行到不.....");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            System.out.println("对不起,你执行不到...");
        }
        finally{
            System.out.println("finally 在执行...");
        }
    }

}

在这里插入图片描述

总结:关于异常最少会用基本的try catch去捕获异常,关于其他用法后期可以慢慢了解使用

推送几篇关于写到异常的博客:

通道一
通道二

看到别学总结的学习编程的思路,记下来作为参考

个人认为,对于入门程序员来讲,比较好的入门方法是找一个适合自己的系列视频教程,手敲所有的例子代码,并且完成其中的project。在我入门java的时候,看的是马士兵老师的系列教程。
马老师的视频的好处在于:
(1)大量的coding例子。后期会做一些《贪吃蛇》《坦克大战》这种project,对理解面向对象很有帮助。
(2)深入浅出的解释面向对象的概念。
(3)会穿插讲一些底层的概念。比如堆栈的概念,马老师会使用一些图形来解释一段代码在底层中的运行逻辑。
读书来学习编程是必要的。
不过那是在你入门之后,一些经典的编程书类似《Effective Java》是值得反复深入研读的。
可是对于入门者来说,任何一本书都不如直观的代码和简易的解释来得有效,这一切都可以在视频教程中获得。对着视频学习代码不是一件很low的事情,绝大多数程序员都经历过这个阶段,只是大家有点不愿意回首这段往事而已。

猜你喜欢

转载自blog.csdn.net/osdfhv/article/details/84202776
今日推荐