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

    参考原文:https://blog.csdn.net/java_cxrs/article/details/91661623

    版权声明:本文为CSDN博主「不善^」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/java_cxrs/java/article/details/91661623

    大概也学了有段时间的 java,对于异常的概念还是很模糊,还只是停留在该抛的抛,该捕获的捕获的这个知识层面上。

    刷到了异常的题目,自己想不明白,所以还是来基本的了解下异常   

    例题1:

    public class Test{
    
        void readCard(int cardNo) throws Exception {
            System.out.println("Reading Card");
        }
    
        void checkCard(int cardNo) throws RuntimeException { // line n1
            System.out.println("Checking Card");
        }
    
        public static void main(String[] args) {
            Test ex = new Test();
            int cardNo = 12344;
            ex.checkCard(cardNo);                //line n2
            ex.readCard(cardNo);                 //line n3
        }
    }
    //异常处理
    结果是什么?
    A. Reading Card
    Checking Card
    B. 编译仅在 line n1 处失败。
    C. 编译仅在 line n2 处失败。
    D. 编译仅在 line n3 处失败。
    E. 编译在 line n2 和 line n3 处均失败。

    答案为什么是D呢???? 下面初步理解后就会知道了。

    Error :   是程序中无法处理的错误,表示运行时出现了严重的错误 比如代码编译问题,语法问题这些虚拟机无法处理的问题,就会报Error错误翻译过来就是虚拟机发生了一个致命的错误。如下

    Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
        ex cannot be resolved to a type
        Syntax error on token "d", = expected after this token
    
        at com.oracle.test2.dome06.main(dome06.java:17)

    Exception:程序本身可以捕获并且可以处理的异常。 一般分为Checked异常和Runtime异常,所有RuntimeException类及其子类的实例被称为Runtime异常,不属于该范畴的异常则被称为CheckedException。

    运行时异常(不受检异常):RuntimeException类极其子类表示JVM在运行期间可能出现的错误。编译器不会检查此类异常,并且不要求处理异常,比如用空值对象的引用(NullPointerException)、数组下标越界(ArrayIndexOutBoundException)。此类异常属于不可查异常,一般是由程序逻辑错误引起的,在程序中可以选择捕获处理,也可以不处理。

    非运行时异常(受检异常):Exception中除RuntimeException极其子类之外的异常。编译器会检查此类异常,如果程序中出现此类异常,比如说IOException,必须对该异常进行处理,要么使用try-catch捕获,要么使用throws语句抛出,否则编译不通过。

    处理异常的关键词:

    抛出异常:throw,throws

    捕获异常:try,catch,finally

    抛出异常throw

    throw用在方法内,用来抛出一个异常对象,将这个异常对象传递到调用者处,并结 束当前方法的执行。

    throw 使用格式:

     try.....catch使用:

         try {
                
            } catch (Exception e) {
                // TODO: handle exception
            }finally {
                
            }

    例题中:代码  ex.readCard(cardNo);    调用以下方法,方法执行了Exception抛异常 

    void readCard(int cardNo) throws Exception {
            System.out.println("Reading Card");
        }
    

     所以 根据 非运行时异常(受检异常)   的规定:

     必须抛异常或补异常否则编译不通过.。

    小知识点:

    1  当异常没有被检测出来 捕获或者抛出时, 它才可以重新抛出;

    2 Error是虚拟机无法处理的异常,不可恢复;

    3 异常均可恢复 error除外;

    个人学习,内容简略。

  • 相关阅读:
    结构体位域与规范定义顺序的问题
    visual studio 2015使用MFC的console调试打印
    MFC笔记
    MFC中解决文本保存到文件时乱码问题
    C/C++关于文件的读写操作以及文件的打开和保存
    MFC使用自定义消息
    MFC输入框CEdit控件十六进制转换
    Visual studio C++ MFC应用程序自动探测串口号
    visual C++ MFC串口编程overlapped结构汇总
    模块及模块间的接口方式
  • 原文地址:https://www.cnblogs.com/2979100039-qq-con/p/13100323.html
Copyright © 2011-2022 走看看