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

    Java 异常

    1.Error和Exception:

    Error:是程序中无法处理的错误,表示运行应用程序中出现了严重的错误。此类错误一般表示代码运行时JVM出现问题。通常有Virtual MachineError(虚拟机运行错误)、

    NoClassDefFoundError(类定义错误)等。比如说当jvm耗完可用内存时,将出现OutOfMemoryError。此类错误发生时,JVM将终止线程。非代码性错误。因此,

    当此类错误发生时,应用不应该去处理此类错误。

    Exception::程序本身可以捕获并且可以处理的异常。

    2.捕获和抛出异常:

    Java异常机制用到的几个关键字:try、catch、finally、throw、throws。

    •  try        -- 用于监听。将要被监听的代码(可能抛出异常的代码)放在try语句块之内,当try语句块内发生异常时,异常就被抛出。
    • catch   -- 用于捕获异常。catch用来捕获try语句块中发生的异常。
    • finally  -- finally语句块总是会被执行。它主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者throw等终止方法的语句,则就不会跳回执行,直接停止。
    • throw   -- 用于抛出异常。
    • throws -- 用在方法签名中,用于声明该方法可能抛出的异常。主方法上也可以使用throws抛出。如果在主方法上使用了throws抛出,就表示在主方法里面可以不用强制性进行异常处理,如果出现了异常,就交给JVM进行默认处理,则此时会导致程序中断执行。

    异常的父子级: 

    代码实现:

    import org.w3c.dom.Text;
    
    public class Demo1{
        public static void main(String[] args) {
            int a = 1;
            int b = 0;
            try{
                //只要try中的代码出错就会到catch
                System.out.println(a/b);
    
            }catch (ArithmeticException e){//catch(捕获异常的类型)
                //只要报ArithmeticException的错误就会执行下面的代码
                System.out.println("ArithmeticException错误");
    
            }catch (Error e){ //catch可以写多个
                System.out.println("未知异常");
    
            }finally {
                System.out.println("不管报没报错都会执行finally");
            }
    
            //调用text方法
            new Demo1().text(a,b);
    
        }
        //假设这方法中,处理不了这个异常,可以用throws在方法上抛出异常
        //throws会将异常抛给调用它的程序
        public void text(int a ,int b) throws Error{
            if (b==0){
                //throw主动抛出异常 一般在方法中使用
                throw new ArithmeticException();
            }
    
        }
    }

    3.自定义异常:

    如果要自定义异常类,则扩展Exception类即可,因此这样的自定义异常都属于检查异常(checked exception)。如果要自定义非检查异常,则扩展自RuntimeException。

    按照国际惯例,自定义的异常应该总是包含如下的构造函数:

    • 一个无参构造函数
    • 一个带有String参数的构造函数,并传递给父类的构造函数。
    • 一个带有String参数和Throwable参数,并都传递给父类构造函数
    • 一个带有Throwable 参数的构造函数,并传递给父类的构造函数。
     下面是IOException类的完整源代码,可以借鉴。
    public class IOException extends Exception
    {
        static final long serialVersionUID = 7818375828146090155L;
    
        public IOException()
        {
            super();
        }
    
        public IOException(String message)
        {
            super(message);
        }
    
        public IOException(String message, Throwable cause)
        {
            super(message, cause);
        }
    
        
        public IOException(Throwable cause)
        {
            super(cause);
        }
    }
  • 相关阅读:
    不同的二叉搜索树
    二叉树展开为链表
    二叉树的中序遍历
    二叉树的直径
    树系列之对称二叉树
    从前序与中序遍历序列构造二叉树
    字符串反转
    旋转图像---二维矩阵
    双指针---最接近的三数之和
    Egret 小游戏实战教程 跳一跳(搬运二)
  • 原文地址:https://www.cnblogs.com/love2000/p/14144460.html
Copyright © 2011-2022 走看看