java抛出检查过的异常?
我很确定这以前是有效的,但是eclipse说它在抛出行中有错误
try{}
}catch(Exception e){
throw e; }
在我以前的学生项目中,我写道:
try {
Class.forName("org.postgresql.Driver");
this.connection = DriverManager.getConnection(
DataSource.getURL(), DataSource.getUserName(), DataSource.getPassword());
} catch (ClassNotFoundException e) {
System.out.println("Could not find driver to connect to database. Please make"
+ "sure the correseponding postgreSQLjdbc library is added.");
throw e;
} catch (SQLException e) {
System.out.println("Username or password is not correct");
throw e;
}
这是完美的
只有这种类型有效,但它不是我想要的
throw new UnsupportedAddressTypeException();
# 1 楼答案
eclipse表示这是一个错误,因为:
包含这段代码的方法需要声明“throws Exception”
该方法要么需要处理异常本身,要么向其他调用方法发出信号,它可以抛出异常,并且它们应该处理该异常
另一种处理方法是将“throw e”括在另一个try/catch块(处理异常本身的方法)中
uni代码之所以有效,是因为包含这些语句的方法必须声明为:
方法x()抛出ClassNotFoundException、SQLException
# 2 楼答案
大概你的方法是声明抛出
UnsupportedAddressTypeException
,而不是SQLException
和ClassNotFoundException
。选中的异常只能从声明抛出这些异常或超类的方法中抛出(包括重新抛出现有异常)# 3 楼答案
如果没有关于具体操作细节的额外信息,我能给你的唯一通用解决方案就是用一个未经检查的RuntimeException重新包装异常
您包含的代码返回异常,这是一个选中的异常。除非incide的方法声明为“throws Exception”,否则在任何Java版本中都不可能工作
另一方面,永远不要记录和重播。要么这样,要么那样。所以你的项目代码应该是这样的:
# 4 楼答案
ClassNotFoundException或SQLException是选中的异常。因此,无论何时抛出,都应该以某种方式处理它们(即使手动使用“throw”关键字)
有两种方法可以处理选中的异常: 1.将可能在try-catch块中引发选中异常的代码包围起来。 2.在编写特定代码的方法定义之后添加throws子句
现在,当您“抛出e”时,其中e是ClassNotFoundException或SQLException的实例,必须通过上述两种方式中的任何一种来处理它
但是,UnsupportedDressTypeException是未经检查的异常。所以你不需要明确地处理它。你可以把它扔到任何地方,Java会处理它