java中自定义异常

java中异常处理

回顾篇

try-catch多么神奇的语法,将可能出错的地方放在try里面,表示试试,然后在catch中捕获出错的,进行处理

catch捕获异常时可能出现多种异常,我们在处理的时候要先捕获子异常,在捕获更高层的异常,然后从域的角度看,也就是从小到大的范围。

final-无论是否出现异常,finally的代码都会被执行。

【面试题目】

1.throw与throws的区别

两个区别: a.thows出现在方法声明上,throw通常出现在方法体内。b.throws表示可能会出现异常,并不一定出现异常;throw则是抛出异常,执行throw表示一定会抛出某个异常对象。

 

1、异常的分类:

① 非运行时异常(Checked Exception)

Java中凡是继承自Exception但不是继承自RuntimeException的类都是非运行时异常

我们的可查异常,则是必须进行处理的异常.不处理编译器就不让你过,难受~~

② 运行时异常(Runtime Exception/Unchecked Exception)

a) RuntimeException类直接继承自Exception类,称为运行时异常。Java中所有的运行时异常都直接或间接的继承自RuntimeException.

Java中所有的异常类都直接或间接的继承自Exception。

erro错误: 指的是系统级别异常。 通常是内存用光了

 

2、异常的处理:

对应非运行时异常,必须对其进行处理。处理方式有两种:

使用try…catch…finally语句块进行捕获
在产生异常的方法所在的方法声明throws Exception

对于运行时异常,可以不对其进行处理,也可以对其进行处理。一般情况下都不对其进行处理

 

3.通过继承Exception类实现自定义异常


import java.io.IOException;

/**
 *
 * @author Administrator
 */
public class DaoException extends RuntimeException {

   public DaoException() {
        super();
    }
      
    public DaoException(String message) {
        super(message);
    }
    
    public DaoException(String message, Throwable cause) {
        super(message, cause);
    }
    
}
extends RuntimeException {

   public DaoException() {
        super();
    }
      
    public DaoException(String message) {
        super(message);
    }
    
    public DaoException(String message, Throwable cause) {
        super(message, cause);
    }
    
}

 

在调用时,我们便可以直接new 自定义的异常

  public void addCourse(Course course) throws ServiceException {
        try {
            courseDao.insert(course);
        } catch (DaoException e) {
            throw new DaoException("数据库操作异常,请稍后重试", e);
        }
    }

java中自定义异常_第1张图片

其实在写程序中,我们需要捕获或者抛出的异常经常是Runtime Exception(继承自java.lang.RuntimeException)

参考文章:java异常封装

 

 

你可能感兴趣的:(java)