我正在研究一个Android项目,我试图找出如何将异常抛回到调用线程。
我所拥有的是一项活动,当用户点击一个按钮时,它会调用另一个java类(非活动,标准类)中的线程函数。标准类中的方法可以抛出IOException
或Exception
。我需要将异常对象抛回到活动中的调用方法,以便活动可以根据返回的异常执行一些操作。
以下是我的活动代码:
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中处理,而不是调用方法异常处理程序。
感谢您提供的任何帮助。
答案 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中调用你的电话。