美文网首页
Java_异常

Java_异常

作者: 老北瓜 | 来源:发表于2020-04-08 14:29 被阅读0次

    概念 : 程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。
    在java中,异常本身就是一个类,产生的异常的过程是创建异常对象并抛出一个异常对象,java处理异常的方式是中断处理。

    异常体系 Throwable

    Error(不能处理,只能尽量避免,只有修改掉异常,程序才能继续执行)
    |------ 内存溢出 , 只能修改源代码了
    Exception (使用不当导致,可以避免,把异常处理掉,程序可以继续执行)
    |----- 编译期异常,编译就出现问题
    |----- RuntimeException 运行期异常,java程序运行过程中出现的问题

    处理异常的方法 有 throw Exception 和 try{} catch()

    异常产生的过程: 出现异常的地方被JVM检测出来,会根据异常产生的原因创建一个异常对象,包含了异常的内容,原因和位置;如果没有处理异常的逻辑,jvm把异常对象向上抛出给调用者来处理( main() ), 如果调用者也没有处理异常的逻辑,向上抛出给jvm处理,jvm接收到异常后,把异常对象打印在控制台,中断当前的运行的程序。

    处理异常的关键字
    throw : 可以在指定的方法中抛出指定的异常
    必须卸载方法的内部
    后边new 的对象必须是 Exception 或其子类
    抛出指定的异常对象,我们必须处理, RuntimeException 可以不处理
    throws: 当方法内部抛出异常的时候,必须处理这个异常对象, 可以使用throws处理异常对象,(RuntimeException除外)会把异常对象抛出给方法的调用者处理,最终交给jvm


    image.png

    在定义方法的地方添加了 throws FileNotFoundException

    捕获异常 try catch 自己来处理的异常

     public static void main(String[] args) {
            try {
                method("a.tx");
            } catch (FileNotFoundException e) {
                System.out.println("自己处理异常 ");
            }
    
        }
        private static void method(String file) throws FileNotFoundException {
            if (!file.endsWith(".txt")) {
                throw new FileNotFoundException("文件后缀名不对");
            }
        }
    

    Throwable 类中定义了三个异常处理的方法
    (Exception e) e.getMessage()
    e.toString()
    e.printStackTrace();

    finally 代码块
    不管异常是否发生都要执行的代码 写在 finally{ } 代码块中。
    一般用于资源释放(资源回收,比如 io流中)
    如果finally 中有return , 返回的结果永远是 finally 中的结果,应该避免这种情况

    多个异常的捕获
    一个 try 对应多个catch , 一次捕获,多次处理

    *** 自定义异常类***
    继承 Exception 或者 RuntimeException
    重写一个空构造方法 和一个 带异常信息的构造方法

    public class MyException extends  Exception {
    
        public MyException() {
        }
    
        public MyException(String message) {
            super(message);
        }
    }
    

    模拟注册操作,如果用户名已存在,抛出异常

    相关文章

      网友评论

          本文标题:Java_异常

          本文链接:https://www.haomeiwen.com/subject/znjzphtx.html