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

    所有的异常都有一个超类throwable;

    throwable有两个子类:Exception和error(一般在重大错误,不能够自行恢复);

    Exception有两个子类:checked和runtime exception异常;

    checked:检查时异常,就是程序代码有的错误会有红色波浪线的异常,在运行之前会提示出来;

    runtime exception:运行时有错误会报出的异常如空指针异常和下标越界异常;

    进行异常处理有以下两个方法:

    1、使用try{}  catch(异常种类){}

    try 里面一般是一整个功能在一起,有时候需要自己进行判断,有时是程序会自动提示需要加上try.....catch进行处理。

    如下面的代码:

    int a=3;
    int b=0;
    System.out.println(a/b);

    System.out.println("除法运算");

    会产生异常:

    Exception in thread "main" java.lang.ArithmeticException: / by zero
    at anli.f.main(f.java:7)

    这个时候如果不处理会报出如下异常,是虚拟机自动处理之后程序终止,后面的程序就不在执行,如果不想程序就此终止可以加上try...catch进行处理;

    try {
    int a = 3;
    int b = 0;
    System.out.println(a / b);
    } catch (Exception e) {
    // TODO: handle exception
    System.out.println("除数不能为0!");
    }
    System.out.println("除法运算");

    输出结果:

    除数不能为0!
    除法运算

    另外还有一种模式:try....catch....finally;不管是否会发生异常都会处理finally的代码块除非用system.exist(0)进行了处理;

    示例如下:

    try {
    int a = 3;
    int b = 0;
    System.out.println(a / b);
    } catch (Exception e) {
    // TODO: handle exception
    System.out.println("除数不能为0!");
    }finally {
    System.out.println("finally代码块");
    }
    System.out.println("除法运算");

    结果:

    除数不能为0!
    finally代码块
    除法运算

    注意:try可以和catch或者finally分别使用,但是不能单独使用

    2、throws和throw;

    throws:抛出异常声明,说明有异常,但不进行处理。抛出异常让程序的调用者进行处理,如果一直都不进行try....catch处理就会最终交给虚拟机处理;

    throw:抛出一个异常,一般用于抛出一个新的异常或者自定义异常;

    用法实例:

    public void div(int a,int b) throws Exception{
    if(b==0){
    throw new Exception("除数不能为零");
    }
    System.out.println(a/b);
    }

    f fm=new f();
    int a=4;
    int b=0;
    try {
    fm.div(a, b);
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.getMessage();//获取异常信息可以有这个和下面一行的方法;
    e.printStackTrace();
    }

    System.out.println("除法运算");

    结果:

    java.lang.Exception: 除数不能为零
    at anli.f.div(f.java:21)
    at anli.f.main(f.java:10)
    除法运算

    注意:可以使用多重try....catch........catch;

    子类异常在前面,父类异常在后面,一般最后的异常一般是exception;

    3、自定义异常类;

    可以自定义一个异常继承一个异常类,如exception或者runtime exception;

    在使用的时候需要使用throw 抛出一个自定义异常;

    如定义一个 AgeException extends Exception{

    里面需要继承父类的构造方法,可以自定义生成;

    };

    在使用的时候只需要在在throw时抛出:

    throw new AgeException("除数不能为零");

    把上面的代码throw new exception改为上面代码,最后会抛出Age Exception;

    4、throw和throws的区别:

    a. 作用不同,throws是声明异常,throw是抛出异常;

    b.作用位置不同,throws是在类后面声明,可以声明抛出多个异常,throw是抛出一个异常对象;

    c.定义字眼不同;

  • 相关阅读:
    GDI绘图1——自定义函数
    GDI绘图1——枚举
    打箱子&地形&鼠标点击移动总结
    使用Playmaker1——基础使用
    图形用户编程工具集比较--转
    Java中抽象类和接口的区别
    myeclipse安装 配置Maven3
    在Ubuntu上安装hadoop2.2.0的一些记录
    Hadoop2.2.0安装配置手册!完全分布式Hadoop集群搭建过程
    获得hadoop源码网址
  • 原文地址:https://www.cnblogs.com/YWJAVA7010/p/9366961.html
Copyright © 2011-2022 走看看