您可以使用和如您所说 在 方法 内 管理异常。在这种情况下,您无需使用。例如:
try``catch``throws
public void myMethod(){ try { } catch (SpaceInvadersException exception) { }}但是,假设您有1000种方法,所有这些方法都可能抛出
SpaceInvadersException。然后,您将不得不编写所有复杂的错误处理代码一千次。当然,你总是可以创建一个
ErrorHandler类与
dealWithSpaceInvadersException()方法,你可以从他们打电话,但你仍然可以用一千卡
try-
catch块。
相反,您告诉编译器这千个方法中的每一个都可能抛出
SpaceInvadersException。然后,任何调用这些方法之一的方法都需要处理错误本身,方法是使用
try-
catch或告诉编译器 它 可能抛出
SpaceInvadersException。使用
throws关键字完成此操作,如下所示:
public void myMethod() throws SpaceInvadersException{ }public void callingMethod(){ try { myMethod(); } catch (SpaceInvadersException exception) { }}在这种情况下,您需要通知编译器
myMethod可能抛出
SpaceInvadersException。这意味着您必须以某种方式(
try-
catch或
throws在调用方法上使用关键字)处理异常,才能调用该方法。如果
throws不存在,则可以在不进行任何异常处理的情况下调用该方法,并获得程序中任何地方都未处理的异常(这很糟糕)。
由于它始终是更好地避免代码重复,通常最好的手掌掉错误处理的
try-
catch在一个更高的水平功能比它是在所有的低水平方法分别处理。这就是为什么存在这种机制的原因。



