面试题答案
一键面试- 中间层方法处理和传播异常:
- 在中间层方法中,可以使用
try - catch
块捕获底层方法抛出的自定义异常。如果中间层无法处理该异常,可以再次抛出,以便上层方法处理。例如:
public class MiddleLayer { public void middleMethod() { try { // 调用底层方法 new LowerLayer().lowerMethod(); } catch (CustomException e) { // 可以在这里记录日志等操作 System.out.println("中间层捕获到自定义异常,准备重新抛出"); throw e; } } }
- 在中间层方法中,可以使用
- 顶层方法处理异常:
- 在顶层方法中,使用
try - catch
块捕获从中间层传播上来的自定义异常,并进行相应处理。例如:
public class TopLayer { public static void main(String[] args) { try { new MiddleLayer().middleMethod(); } catch (CustomException e) { System.out.println("顶层捕获到自定义异常,异常信息:" + e.getMessage()); e.printStackTrace();// 打印异常堆栈信息 } } }
- 在顶层方法中,使用
- 异常堆栈信息的维护和作用:
- 维护:在Java中,异常对象在抛出和传播过程中,会自动维护异常堆栈信息。每次捕获并重新抛出异常时,异常对象的堆栈信息不会丢失。例如,在上述中间层捕获并重新抛出异常时,
throw e
会将带有原始堆栈信息的异常对象继续向上传递。 - 作用:异常堆栈信息记录了异常发生的完整调用链,从异常最初抛出的方法,一直到最终捕获异常的方法。顶层调用者通过打印异常堆栈信息(如
e.printStackTrace()
),可以了解异常发生的具体位置,包括类名、方法名、行数等信息,有助于快速定位和排查问题。例如,如果底层方法lowerMethod
在第10行抛出异常,通过异常堆栈信息,开发人员可以直接定位到LowerLayer
类的lowerMethod
方法的第10行代码处。
- 维护:在Java中,异常对象在抛出和传播过程中,会自动维护异常堆栈信息。每次捕获并重新抛出异常时,异常对象的堆栈信息不会丢失。例如,在上述中间层捕获并重新抛出异常时,