zoukankan      html  css  js  c++  java
  • java异常

    Java异常是什么?

    Java异常是Java提供的一种识别及响应错误的一致性机制。java为常见的错误设计了异常类,可以在遇到问题时被捕捉,方便debug.

    异常类层次结构

    +Throwable
    +Error
    +Exception
    +IOException
    +RuntimeException

    典型异常

    1.Exception中除RuntimeException外的子类 检查性异常:错误的操作引起的异常,如打开不存在的文件.编译器会检查它.
    2.RuntimeException 运行时异常:编译器不会检查运行时异常,1/0可以通过编译.
    3.错误: 资源不足,约束失败,或无法继续运行等,产生错误.

    异常捕捉语法

    try{
        ...
    }catch(Exception e){
        ...
    }finally{
        ...
    }
    

    首先执行finally中的语句,后执行catch中的returb语句.

    throw关键字

    throws是用于声明抛出的异常,而throw是用于抛出异常。

    class MyException extends Exception {
        public MyException() {}
        public MyException(String msg) {
            super(msg);
        }
    }
    public static void test() throws MyException{
        try {
            int i = 10/0;
              System.out.println("i="+i); 
        } catch (ArithmeticException e) {
            throw new MyException("This is MyException"); 
        }
    }
    

    常见异常

    FileNotFoundException文件不存在异常,编译错误
    NullPointerException 空指针异常
    ArithmeticException 除数为零
    ClassCastException 类型转换异常
    OutOfIndexException 数组下标越界异常
    ParseException 解析异常,日期字符串转换为日期对象的时候,有可能抛出的异常
    OutOfMemoryError 内存不足

    我该怎么做?

    提早抛出+延迟捕获.
    在错误最早发生的位置抛出异常,但让导致该错误发生的位置捕获异常.我们的目的是为了利用异常检测在哪里为什么出错.过早的捕获异常没有意义,且可能导致混淆.

    参考资料:
    菜鸟教程
    how2j教程
    知乎
    skywang12345

  • 相关阅读:
    numpy模块之axis(转)
    使用lxml解析HTML代码
    关于Python中的可变对象与不可变对象的区别(转)
    python线程(转)
    SSTI模板注入
    逆向与反汇编实战(一)--PEiD分析复现
    二进制各种漏洞原理实战分析总结
    认识二进制安全与漏洞攻防技术 (Windows平台)
    CSRF 漏洞
    逻辑漏洞之越权漏洞的三种越权思路|burpsuite逻辑漏洞测试一
  • 原文地址:https://www.cnblogs.com/bestefforts/p/11334878.html
Copyright © 2011-2022 走看看