Java 扩展SQLException-基类抛出的错误

Java 扩展SQLException-基类抛出的错误,java,exception-handling,Java,Exception Handling,(久别后返回爪哇) 简而言之:现有代码抛出SQLException。我想捕捉这些事件。我创建了一个扩展SQLException的类,并尝试更新函数的throws声明,但遇到编译错误 java:未报告的异常java.sql.SQLException;必须被抓住或宣布被抛出 我想做的事被允许了吗?如果没有,是否有办法在子类中捕获预定义的异常?简言之:如果将throws声明添加到方法中,则要“抛出的异常应在方法体中的某个位置”抛出 是的,如果您想要一种“业务SQL异常”,您可以扩展SQLExcepti

(久别后返回爪哇)

简而言之:现有代码抛出SQLException。我想捕捉这些事件。我创建了一个扩展SQLException的类,并尝试更新函数的throws声明,但遇到编译错误

java:未报告的异常java.sql.SQLException;必须被抓住或宣布被抛出


我想做的事被允许了吗?如果没有,是否有办法在子类中捕获预定义的异常?

简言之:如果将throws声明添加到方法中,则要“抛出的异常应在方法体中的某个位置”抛出

是的,如果您想要一种“业务SQL异常”,您可以扩展
SQLException
,我建议您捕获(而不是陷阱)
SQLException
,然后抛出您自己的异常,该异常扩展了
SQLException

编辑: 如果您不知道catch关键字是如何工作的,下面是一个捕获SQLException的示例:

public void executeQuery(String sql) {
  try {
    // do some database connection which can throw SQLException
  } cathc (SQLException e) {
    // send this exception via mail
  }
}

简而言之:如果将throws声明添加到方法中,则要抛出的异常“应该是方法体中的某个地方

是的,如果您想要一种“业务SQL异常”,您可以扩展
SQLException
,我建议您捕获(而不是陷阱)
SQLException
,然后抛出您自己的异常,该异常扩展了
SQLException

编辑: 如果您不知道catch关键字是如何工作的,下面是一个捕获SQLException的示例:

public void executeQuery(String sql) {
  try {
    // do some database connection which can throw SQLException
  } cathc (SQLException e) {
    // send this exception via mail
  }
}

简而言之:如果将throws声明添加到方法中,则要抛出的异常“应该是方法体中的某个地方

是的,如果您想要一种“业务SQL异常”,您可以扩展
SQLException
,我建议您捕获(而不是陷阱)
SQLException
,然后抛出您自己的异常,该异常扩展了
SQLException

编辑: 如果您不知道catch关键字是如何工作的,下面是一个捕获SQLException的示例:

public void executeQuery(String sql) {
  try {
    // do some database connection which can throw SQLException
  } cathc (SQLException e) {
    // send this exception via mail
  }
}

简而言之:如果将throws声明添加到方法中,则要抛出的异常“应该是方法体中的某个地方

是的,如果您想要一种“业务SQL异常”,您可以扩展
SQLException
,我建议您捕获(而不是陷阱)
SQLException
,然后抛出您自己的异常,该异常扩展了
SQLException

编辑: 如果您不知道catch关键字是如何工作的,下面是一个捕获SQLException的示例:

public void executeQuery(String sql) {
  try {
    // do some database connection which can throw SQLException
  } cathc (SQLException e) {
    // send this exception via mail
  }
}


因此,让现有方法(即“抛出SQLException”)保持原样并将声明更改为“抛出mynewexception”是不够的?我需要在方法中捕获SQLException,然后抛出mynewexception()?是的,您需要捕获SQLException,然后抛出new YourNewException();但是仔细想想,通常它不是必需的“通常它不是必需的”??我分配的任务是捕获SQLExceptions并发送一些邮件。我的意思是,通常你可以使用标准的异常来编写你的逻辑,而不是用你自己的异常来扩展它们,根据我的经验,这是非常罕见的。当然,这取决于你想做什么。问问你自己,如果你只需要通过电子邮件发送stacktrace,你真的需要将SQLException子类化吗?如果你不知道catch是如何工作的,请在回答中查看我的编辑。因此,让现有方法(throws SQLException)保持原样并将声明更改为throws mynewexception是不够的?我需要在方法中捕获SQLException,然后抛出mynewexception()?是的,您需要捕获SQLException,然后抛出new YourNewException();但是仔细想想,通常它不是必需的“通常它不是必需的”??我分配的任务是捕获SQLExceptions并发送一些邮件。我的意思是,通常你可以使用标准的异常来编写你的逻辑,而不是用你自己的异常来扩展它们,根据我的经验,这是非常罕见的。当然,这取决于你想做什么。问问你自己,如果你只需要通过电子邮件发送stacktrace,你真的需要将SQLException子类化吗?如果你不知道catch是如何工作的,请在回答中查看我的编辑。因此,让现有方法(throws SQLException)保持原样并将声明更改为throws mynewexception是不够的?我需要在方法中捕获SQLException,然后抛出mynewexception()?是的,您需要捕获SQLException,然后抛出new YourNewException();但是仔细想想,通常它不是必需的“通常它不是必需的”??我分配的任务是捕获SQLExceptions并发送一些邮件。我的意思是,通常你可以使用标准的异常来编写你的逻辑,而不是用你自己的异常来扩展它们,根据我的经验,这是非常罕见的。当然,这取决于你想做什么。问问你自己,如果你只需要通过电子邮件发送stacktrace,你真的需要将SQLException子类化吗?如果你不知道catch是如何工作的,请在回答中查看我的编辑。因此,让现有方法(throws SQLException)保持原样并将声明更改为throws mynewexception是不够的?我需要在方法中捕获SQLException,然后抛出mynewexception()?是的,您需要捕获SQLException,然后抛出new YourNewException();但是仔细想想,通常它不是必需的“通常它不是必需的”??我分配的任务是捕获SQLExceptions并发送一些邮件。我的意思是,通常你可以使用标准的异常来编写你的逻辑,而不是用你自己的异常来扩展它们,根据我的经验,这是非常罕见的。当然,这取决于什么