Jon*_*Jon 6 java android exception-handling
我是Android环境中的新手,我已经开始编写一些代码来对数据库执行一些查询.当我必须处理异常时,我不知道采用什么方法 - 在Android中我曾经使用throws过方法声明,但似乎throws在android 中是不允许的?只是try-catch?我这样说是因为eclipse不建议我添加throws声明,就像我在Android环境之外,我猜它与之相关extends Activity.那么在android中处理异常的适当方法是什么?围绕每个句子try-catch使我的代码看起来很糟糕,这不是我想要做的.
Zek*_*eki 13
如果您使用的方法已经抛出异常,您可能只想将异常重新抛出为新类型:
public void someMethod() throws IOException {
try {
// Do database operation
} catch (MyException e){
throw new IOException(e.toString());
}
}
// Or, if there is no exception, use an unchecked exception:
public void otherMethod() {
try {
// DB operation
} catch (MyException e){
throw new RuntimeException(e);
}
}
Run Code Online (Sandbox Code Playgroud)
另一种选择是MyException扩展RuntimeException.然后编译器不会强制您捕获它或将其添加到方法签名.RuntimeExceptions称为未经检查的异常,这意味着您不必通过try/catch检查它们是否发生.这些的例子是NullPointer和ArrayOutOfBounds.
您无法“通过 eclipse 在 android 中添加 throws”的原因是因为您不是定义接口或超类的人。如果您想向方法签名添加异常(就像您所说的通常那样),它也需要添加到接口中,并且您无法控制它们,因此无法更改它。
例如方法
protected void onCreate(Bundle savingInstanceState);
您在活动中重写它,如果您想引发异常,则需要将方法签名更改为(例如)
protected void onCreate(Bundle savingInstanceState) 抛出 MyException;
但随后它还需要更改 onCreate 的定义位置,即 Activity 类中的位置 - 这是一个您无法更改的类(因为它由 android 库提供)。
因此,您唯一的选择是捕获异常并对其执行某些操作(或忽略它)。你可以做一个吐司来显示错误
catch (Exception e) {
Toast toast = Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT);
toast.show();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
96485 次 |
| 最近记录: |