【问题标题】:throws Exception correct structure?抛出异常正确的结构?
【发布时间】:2015-05-07 15:59:02
【问题描述】:

只是想知道这是否是用于尝试和异常的正确结构:

MediaPlayer.OnCompletionListener videoViewCompletionListener = new MediaPlayer.OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) throws IllegalStateException {
        try {
            mp.stop();
            mp.release();
            videoView.stopPlayback();
        } finally {
            toastDisplay.cancel();
            toastDisplay = Toast.makeText(MainActivity.this, "Completed Video", Toast.LENGTH_LONG);
            toastDisplay.show();
        }
    }
};

当我这样做时,它是否会使我的应用程序崩溃,以防它在此示例中抛出 IllegalStateException

【问题讨论】:

  • 你应该添加 catch 子句
  • 难道没有办法避免使用 catch 子句吗?

标签: android exception try-catch


【解决方案1】:

您在声明中声明您的方法会抛出 IllegalStateException。但是,您永远不会引发调用者处理的异常。如果要抛出的异常是由MediaPlayer 方法引起的,则需要有一个catch 块。在那里,只有throw 异常供调用者处理。

另外,Exception handling : throw, throws and Throwable 也是一本好书。

【讨论】:

  • 所以不可能让它像我想做的那样并忽略异常?你介意用我的例子做一个例子吗?
  • 是的,如果您希望应用程序继续执行它的工作,您可以只尝试可能引发异常的方法。然后,执行将是CODE,CODE,TRY,(如果异常CATCH),CODE CODE。一如既往的顺序。您还必须在 try/catch 之后添加一些空控件,因为可能会抛出异常
  • @MohamedAllouch 好吧,华金说的(:
  • 那么在这种情况下我的例子是正确的吗?如果抛出异常,它不会崩溃?对不起,我的英语不太好。
  • @MohamedAllouch 在你的的情况下,如果产生了异常,它将进入finally块而不会崩溃。如果您想在抛出异常时执行某些操作,例如显示消息或记录原因,您将需要一个 catch 块 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-05
  • 1970-01-01
  • 2011-02-13
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多