如何在Java中覆盖类方法并向其添加"throws"声明?

Jes*_*ris 3 java android overriding

难道在Android中有一个"抛出"东西的AsyncTask吗?如果我不@Override方法,它不会被调用.如果我在末尾添加"throws",则会出现编译器错误.例如,我想做类似的事情:

class testThrows extends AsyncTask<String,Void,JSONObject> {
   @Override
   protected JSONTokener doInBackground(<String>... arguments) throws JSONException {
      String jsonString = arguments[0];
      JSONTokener json = new JSONTokener(jsonString);
      JSONObject object = json.getJSONObject("test");
      return object;
   }
}
Run Code Online (Sandbox Code Playgroud)

json.getJSONObject抛出JSONException.有没有办法做到这一点?

Sta*_*Man 6

您需要做的是使用运行时(未经检查)异常(通常类似于IllegalArgumentException;或者如果没有任何内容匹配语义,普通RuntimeException)来包装异常,并将已检查的异常指定为"根本原因"(通常作为构造函数参数).

不,你不能扩大一组检查异常:这将违反基本的OO原则,类似于你不能降低可见性(例如从公共到私有).