• Java捕获异常的问题


    ---恢复内容开始---

      在Java编译过程中,有时候会出现输入未按照规定输入的情况,此时需要警告用户输入错误,这就会是程序运行过程中出现异常。异常就是可预测但是又没办法消除的一种错误。所以在编写过程中,为了在程序当中不发生这样的错误,就会将容易发生异常的代码用try catch进行处理,或者通过throws将异常向上抛出,由上一级进行接收并处理。
      如果发生异常而不去处理,会导致程序中断,也就是程序无法继续运行。

      下面来详细的说一下有关异常的一些问题。

    一、异常的产生

      异常是程序之中导致程序中断的一种指令流,异常一旦出现并且没有进行合理处理的话,那么程序就将中断执行。 

      例如:

      在编写的时候,比如说你想把一个字符串型转换成int型的,如果这样是没问题的。

      String s = "1";

           int i;

      i = Integer.parseInt(s);

      这样是不会出现错误的,但是如果你这样写,就会出现错误。

      String s = "a";

           int i;

      i = Integer.parseInt(s);

    在编译过程中,编译器不会给你这方面的提示。在开始的时候我已经说过,异常的出现是程序运行到此处的时候才产生的。所以,在编写的时候并不会给你提醒错误,而是在运行的时候才会出现。

    二、异常的类型

      一般来说,异常分为可检测异常和非检测异常。

      1、可检测异常

      可检测异常经编译器验证,对于声明抛出异常的任何方法,编译器将强制执行处理或声明规则。

      2、非检测异常

      非检测性异常就是当你运行的时候才会有问题。换句话说就是运行时异常和编译时异常。比如我上面所说的类型的强制转换,在运行过程中,会是程序在运行到此处时中止。

    三、出现异常的解决方法

      在Java中,对于异常有很多的分类,要想做一个合格的程序员,就必须了解这些异常,并学会解决他们的方法。

      常见的异常有:  

        算术异常类:ArithmeticExecption

        空指针异常类:NullPointerException

        类型强制转换异常:ClassCastException

        数组负下标异常:NegativeArrayException

        数组下标越界异常:ArrayIndexOutOfBoundsException

        违背安全原则异常:SecturityException

        文件已结束异常:EOFException

        文件未找到异常:FileNotFoundException

        字符串转换为数字异常:NumberFormatException

        操作数据库异常:SQLException

        输入输出异常:IOException

      在这里就举这些例子,具体请参考  https://www.cnblogs.com/cvst/p/5822373.html

    四、有关自定义异常

      自定义异常就是Java本身不包含的异常类型,需要程序员在编写的时候自己去定义。

      例如,在写计算三角形面积时,我们需要判断输入的三角形的三个边是否能构成三角形,但是,在实际操作过程中,不能构成三角形的三边仍然能计算出面积,这就是出现异常的一个类型。当然,在处理这个问题的时候我们可以调用Java本身包含的异常进行处理,但是,我们也可以自定义一个异常来进行抛出。

      如:

       

      这是我上面提到的有异常但是不提醒的情况。我们可以根据自定义异常来解决这个问题。

      自定义异常:

      

      异常抛出:

      

      运行结果:

      

      

      自定义异常一般这样来定义

      class  自定义异常类  extends  异常类型(Exception){

        // 因为父类已经把异常信息的操作都完成了,所在子类只要在构造时,将异常信息传递给父类通过super 语句即可。

        // 重写 有参 和 无参 构造方法

       }

     例如我上面所提到的方法。具体内容给大家推荐一个网址  https://blog.csdn.net/qq_18505715/article/details/73196421   又前面大佬的总结,在这里我就不再重复了。

  • 相关阅读:
    HDU.5765.Bonds(DP 高维前缀和)
    SPOJ.TLE
    LOJ.2585.[APIO2018]新家(二分 线段树 堆)
    BZOJ.2679.Balanced Cow Subsets(meet in the middle)
    BZOJ.3293.[CQOI2011]分金币(思路)
    BZOJ.4558.[JLOI2016]方(计数 容斥)
    BZOJ.3631.[JLOI2014]松鼠的新家(树上差分)
    BZOJ.1568.[JSOI2008]Blue Mary开公司(李超线段树)
    BZOJ.1071.[SCOI2007]组队(思路)
    BZOJ.4910.[SDOI2017]苹果树(树形依赖背包 DP 单调队列)
  • 原文地址:https://www.cnblogs.com/yandashan666/p/9946239.html
Copyright © 2020-2023  润新知