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

    异常:有异于常态,跟正常形态不一样,有错误。阻止当前方法和作用域。

    Exception也就是所说的异常。是由于编码、环境、用户操作输入出现问题


    try……catch捕获并处理异常


    抛出异常的代码会终止执行,程序的控制权交由catcha块中的异常处理代码

    例如:

    若输入的类型不是整数的话会出现输入类型不匹配异常,catch代码块会执行,输出“你应该输入整数!!!”,接着后面的代码会继续执行

    若try抛出多种类型异常?

    注意:catch中要按照子类到父类的顺序(也就是先捕获小异常,再捕获大异常),不然会出现错误,如下图

    以下情况是顺序错误的:

    try....catch...finally

    finally来实现资源回收,如关闭连接、磁盘文件等啊

    注:一旦在finally块中使用了return或throw语句,将会导致try块catch块中的return,throw语句失效

    常见异常类型


    IndexOutofBoundsException:数组越界异常
    NumberFormatException:数字格式异常
    ArithException:算术异常,比如除数为0

    访问异常信息

    getMessage():返回该异常的详细描述字符串
    printStackTrace():将该异常的跟踪栈信息输出到标准错误输出
    printStackTrace(PrintStream s):将该异常的跟踪栈信息输出到指定输出流
    getStackTrace():返回该异常的跟踪栈信息

    抛出异常


    一旦使用throws语句声明异常,程序就无须使用try...catch来捕获异常了

    自定义异常

    如果希望自定义runtime异常,则应继承RuntimeException基类,定义异常要提供两个构造器:一个是无参数的构造器;一个是带一个字符串参数的构造器,这个字符串将作为该异常对象的描述信息(也是异常对象的getMessage()方法的返回值)

    如:

    public class AuctionException extends Exception{
       //无参数的构造器
      public AuctionException(){}//1
    //带一个字符串参数的构造器 public AuctionException(String msg){//2 super(msg);//通过super调用父类构造器,将此字符串参数传给异常对象的message属性,该message属性就是该异常对象的详细描述信息。
       } 
    }

      异常链

      异常链:把捕获的异常包装成一个新的异常,然后在新的异常里添加对原始异常的引用,再把这个新异常抛出,链式反应一样,一个导致另一个


    在JDK 1.4以后,所有Throwable的子类在构造器中都可以接收一个cause对象作为参数。这个cause就用来表示原始异常,这样可以把原始异常传递给新的异常,使得即使在当前位置创建并抛出了新的异常,你也能通过这个异常链追踪到异常最初发生的位置。

    总结

  • 相关阅读:
    .net注册iis
    hdu 1081To The Max
    hdu 1312Red and Black
    hdu 1016Prime Ring Problem
    hdu 1159Common Subsequence
    hdu 1372Knight Moves
    hdu 1686Oulipo
    hdu 1241Oil Deposits
    hdu 1171Big Event in HDU
    hdu 4006The kth great number
  • 原文地址:https://www.cnblogs.com/WFM1997/p/9157348.html
Copyright © 2011-2022 走看看