结论: 使用的位置不同:throw是写在方法体里面。throws则是用在方法头上面。 作用不同:throw就是直接抛出一个异常,而throws则是说我这个方法可能会抛出一个异常。 自我建议: 尽量少使用,可能发生异常的语句就放在try,catch语句块中,直接进行处理(要处理,哪怕是写一个输出语句)。使用throw也是主动抛出异常,调用这个方法的上级就需要处理这个异常。如果在代码块中使用了throw的话,最好也配套在方法头上面加上throws,好直接告诉上层这个异常的类型。如果发生IO异常,一定要finally里面关闭输入出流。