之前,看异常处理部分的视频的时候老师有说过,在接口实现过程中,为了让异常不污染接口。所以通常接口的部分异常可以用RuntimeException封装。
如下代码:
- import java.io.IOException;
- import java.sql.SQLException;
- /**
- * 用于获取数据长的接口
- * @author CBY
- *
- */
- interface MyDataSourse {
- //获取数据
- String getData();
- }
- /**
- * 从数据库获取数据
- * @author CBY
- *
- */
- class MyDataSourseFromDB implements MyDataSourse {
- @Override
- public String getData() {
- try {
- //与数据库交互,可能上抛SQLException异常
- throw new SQLException("数据库异常");
- } catch (SQLException e) {
- //为了不污染接口,需要封装成RuntimeException的子类异常
- throw new RuntimeException(e.getMessage(),e);
- }
- }
- }
- /**
- * 从网络获取数据
- * @author CBY
- *
- */
- class MyDataSourseFromNet implements MyDataSourse {
- @Override
- public String getData() {
- try {
- //与网络交互,可能上抛IOException异常
- throw new IOException("网络异常");
- } catch (IOException e) {
- //为了不污染接口,需要封装成RuntimeException的子类异常
- throw new RuntimeException(e.getMessage(),e);
- }
- }
- }
复制代码 这些实现,对上层调用者来说,应该是透明的。
那我如何能让上层调用者知道,存在这种异常上抛的情况呢?
|