java的异常

来源:互联网 发布:淘宝服装行业的利润 编辑:程序博客网 时间:2024/06/04 21:57

异常

异常就是Java程序在运行过程中出现的错误。

异常的分类

  • Error (服务器挂了,数据库挂了)
  • Exception

Exception

继承体系:

  • Throwable
    • Error
    • Exception
      • RuntimeException

异常的处理方式

1,自己将该问题处理,然后继续运行( try…catch….finally ).(如果处理异常后还需要执行其他语句的,则用这种方法.)

2,自己没处理,交给调用者处理,也叫往上抛 throws.(这种处理方式如果出现异常时,会执行处理异常并停止运行,也就是说出现异常后面的语句不会继续运行的了.)

Java中的异常被分为两大类:编译时异常和运行时异常。

  • 编译时异常

    • Java程序必须显示处理,否则程序就会发生错误,无法通过编译
  • 运行时异常

    • 无需显示处理,也可以和编译时异常一样处理

异常中常见的方法

Throwable的几个常见方法

  • a:getMessage()
    * 获取异常信息,返回字符串。
  • b:toString()
    • 获取异常类名和异常信息,返回字符串。
  • c:printStackTrace()
    • 获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。

异常类面试题

throws和throw的区别

  • a:throws
    • 用在方法声明后面,跟的是异常类名
    • 可以跟多个异常类名,用逗号隔开
    • 表示抛出异常,由该方法的调用者来处理
  • b:throw
    • 用在方法体内,跟的是异常对象名
    • 只能抛出一个异常对象名
    • 表示抛出异常,由方法体内的语句处理

举个栗子:

package com.zero.mm;public class MM {    private String name;    private int size;    public MM() {        super();    }    public MM(String name, int size) {        super();        this.name = name;        this.size = size;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getSize() {        return size;    }    public void setSize(int size) {        this.size = size;    }    @Override    public String toString() {        return "MM [name=" + name + ", size=" + size + "]";    }    public void makeMyGirlFriend() throws Exception{        if(size > 42)        System.out.println(name+" is "+"my"+" girl");        else            throw new Exception("you are not Suitable");    }    //如果抛的是运行时异常的话是不用再方法上声明的.//  public void makeMyGirlFriend(){//      if(size > 42)//      System.out.println(name+" is "+"my"+" girl");//      else//          throw new RuntimeException("you are not Suitable");//  }}

finally 关键字的面试题

  • 面试题1

    • final,finally和finalize的区别
      其实他们样子很像,当用处一点关系都没有,压根是面试官显摆的.
      final—–可以修饰类,方法,变量,由于是最终的意思,所以该类不能被继承,该方法不能被重写,该变量只能赋值一次.

    finally—-是try 语句中的一个语句题,不能单独使用,用来释放资源的

    finalize— 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。(Object 类中的一个方法.)

  • 面试题2

    • 如果catch里面有return语句,请问finally的代码还会执行吗?如果会,请问是在return前还是return后。(其实是先将结果给return ,然后检查是否有 finally 的语句,就执行finally 中的语句体,最后彻底返回 .)还有一点是切记不要在finally 语句中return 数据.

举个例子

/* 最后返回的结果是 30 */    public static int getSize() {        int size = 10;        try {            size = 20;            int i = 100 /0;            return size;        } catch (Exception e) {            size = 30;            System.out.println("异常了");            return size;        } finally {            size = 40;//          return size;        }    }
0 0