写了Throw后一定要写Throws吗?

不一定。

Java中的异常分为checkedExceptionuncheckedException,也可以成为检查型异常运行时异常

如果是checkedException,你必须最终要去处理该异常,即要使用throws关键字在方法签名上显示抛给上层处理

但是如果是uncheckedException,Java就不会强制让你处理,因此不需要声明throws

checked exception例子

public void getName() throws IOException {
  throw new FileNotFoundException();  // checked exception

unchecked exception例子

private void rangeCheckForAdd(int index) {
  if (index > size || index < 0)
    throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
}