zoukankan      html  css  js  c++  java
  • 简明 Java 错误处理机制

    用个最简单的例子来展示为什么需要错误处理,以及怎么用。

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    
    public class ThrowsTest {
        public static void main(String[] args) throws FileNotFoundException {
            
            try {
                throwsTest();
            } catch (FileNotFoundException e) {
                System.out.println("File is not found!");
                throw e;
            } catch (NullPointerException e) {
                System.out.println(e);
            }
    
            System.out.println("hi");
        }
    
        public static void throwsTest() throws FileNotFoundException,NullPointerException {
            new FileInputStream("shiyanlou.file");
    
            throw new NullPointerException("have a try!");
    
        }
    }

    上面的代码中, throwsTest 抛出了两个 exception:一个错误是由它调用的方法 FileInputStream 抛给它的,另一个是它自己抛出的。

    在 main 函数中,通过 try-catch 来捕捉这两个 exception 并处理。

    基本原则是:

    1. 抛出的 exception 肯定会被 catch。

    2. catch 到的 exception 可以当场处理掉,则 exception 被终止。

    3. catch 到的 exception 也可以再 throw 给上一级调用者处理。

    4. 如果一级级往上抛,最终由 JVM 来 catch 的话,就是直接终止程序并打印 stack frame 错误。

    我们使用 exception 的核心目的,就是为了避免第 3 中情况发生。

    可以想象,如果因为某个文件没有找到,我们的软件就直接崩溃了,这是件很难接受的事情;从使用角度来讲,大不了重新指定路径。

    所以,我们要努力做好前 3 件事。

    前辈总结的 exception 使用心得:

    exception 的继承关系:

    发挥问题:是不是可以自己定义 Throwable ?

  • 相关阅读:
    linux软件名规则
    给php开启mysql扩展
    centos6可用的Apache管理脚本
    Centos下设置redis开机自启动
    拆卸mysql
    如何判断是否在一个网路中
    linux 如何清理僵尸进程
    如何查找僵尸进程并Kill之,杀不掉的要查看父进程并杀之
    一张图告诉你php的命名空间和自动加载
    PHP的文件加载机制到底是什么目录
  • 原文地址:https://www.cnblogs.com/pied/p/11023687.html
Copyright © 2011-2022 走看看