我最近经历了一家公司的采访流程,我被问到这个问题:
让我们说有三种方法: A(),B()和C(); 流程如下:
A(){
B();
}
B(){
C();
}
and
C()
{
// The code here may throw runtime exception.
}
现在,在我们的main方法中,我们调用方法A()并在C()中发生异常。 所以问题是如何处理这种情况? 我想到的第一个解决方案是我们可以使用throws关键字和A()方法,我们可以应用try-catch块。
但面试官看起来并不满意,可能是我没有给出他期望的答案。
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
根据业务情况,您有两种选择。
1)当场处理情况,这意味着尝试捕获并在方法C()
中执行必要的步骤
或
2)只需将throw
重新发送给调用者,直到它到达父调用者A()
,以便它处理这种情况。
答案 1 :(得分:0)
我的意见是不要做任何事情从运行时异常中恢复只是让编译器抛出错误,我的意思是根本不处理Rumtime异常,原因如下
由于运行时异常/未经检查的异常表示编程问题导致的问题,例如除以零;尝试通过空引用访问对象;和索引异常,试图通过索引太大或太小来访问数组元素..等等..
如果可以合理地期望客户端从异常中恢复,请将其作为已检查的异常。如果客户端无法执行任何操作以从异常中恢复,请将其设置为未经检查的异常。
答案 2 :(得分:0)
这取决于您的要求
1方法: - 您可以使用每个函数的签名声明异常类型。 例如
A() throws ExceptionType
{
B();
}
B() throws ExceptionType{
C();
}
and
C() throws ExceptionType
{
// The code here may throw runtime exception.
}
第二种方法: -
try
{
a();
}catch(ExceptionType){}
A(){
B();
}
B(){
C();
}
and
C()
{
// The code here may throw runtime exception.
}
第三种方法: - 你可以调用
中的每个功能try
{
//Function Calling
}catch(ExceptionType){//handeling code}