抛出异常回到调用方法

时间:2014-01-09 18:52:31

标签: java android exception

我正在研究一个Android项目,我试图找出如何将异常抛回到调用线程。

我所拥有的是一项活动,当用户点击一个按钮时,它会调用另一个java类(非活动,标准类)中的线程函数。标准类中的方法可以抛出IOExceptionException。我需要将异常对象抛回到活动中的调用方法,以便活动可以根据返回的异常执行一些操作。

以下是我的活动代码:

private void myActivityMethod()
{
    try
    {
        MyStandardClass myClass = new MyStandardClass();
        myClass.standardClassFunction();
    }
    catch (Exception ex)
    {
        Log.v(TAG, ex.toString());
        //Do some other stuff with the exception
    }
}

以下是我的标准课程功能

private void standardClassFunction()
{
    try
    {
        String temp = null;
        Log.v(TAG, temp.toString()); //This will throw the exception as its null
    }
    catch (Exception ex)
    {
        throw ex; //Don't handle the exception, throw the exception backto the calling method
    }
}

当我将throw ex置于异常中时,Eclipse似乎不高兴,而是要求我在另一个try / catch中包围throw ex,这意味着,如果我这样做,那么异常然后在第二个try / catch中处理,而不是调用方法异常处理程序。

感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:3)

变化:

private void standardClassFunction()
{
    try
    {
        String temp = null;
        Log.v(TAG, temp.toString()); //This will throw the exception as its null
    }
    catch (Exception ex)
    {
        throw ex; //Don't handle the exception, throw the exception backto the calling method
    }
}

private void standardClassFunction() throws Exception 
{

        String temp = null;
        Log.v(TAG, temp.toString()); //This will throw the exception as its null

}

如果要处理调用函数内部调用函数抛出的异常。你可以做的就是不要像上面那样把它扔掉。

此外,如果它是像NullPointerException这样的已检查异常,您甚至不需要写入抛出。

有关已检查和未检查的例外的更多信息:

http://www.geeksforgeeks.org/checked-vs-unchecked-exceptions-in-java/

答案 1 :(得分:2)

如上所述,当您在方法签名中声明throws时,编译器知道此方法可能会抛出异常。

所以现在当你从另一个班级调用这个方法时,你会被要求在try / catch中调用你的电话。