当前位置: 技术问答>java相关
jb写的一个javabean,编译说有两个错误,请大虾看代码
来源: 互联网 发布时间:2015-03-07
本文导语: package bbr; import java.sql.*; public class Dboperation { private Connection conn=null; private Statement stmt=null; private ResultSet rs = null; public Dboperation() { try { Class.forName("sun.jdbc...
package bbr;
import java.sql.*;
public class Dboperation
{
private Connection conn=null;
private Statement stmt=null;
private ResultSet rs = null;
public Dboperation()
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcManager");
conn=DriverManager.getConnection("jdbc:odbc:yu","weiming","158200");
}
catch(SQLException e)
{
System.out.println("数据库联接错误");
System.exit(0);
}
}
public ResultSet rs_jiequ(String msql)
{
try
{
stmt=conn.createStatement();
rs=stmt.executeQuery(msql);
return rs;
}
catch(SQLException ex)
{
System.out.println(ex.toString());
}
}
}
错误提示为:
"Dboperation.java": Error #: 360 : unreported exception: java.lang.ClassNotFoundException; must be caught or declared to be thrown at line 13, column 16
"Dboperation.java": Error #: 466 : method does not return a value at line 23, column 4
import java.sql.*;
public class Dboperation
{
private Connection conn=null;
private Statement stmt=null;
private ResultSet rs = null;
public Dboperation()
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcManager");
conn=DriverManager.getConnection("jdbc:odbc:yu","weiming","158200");
}
catch(SQLException e)
{
System.out.println("数据库联接错误");
System.exit(0);
}
}
public ResultSet rs_jiequ(String msql)
{
try
{
stmt=conn.createStatement();
rs=stmt.executeQuery(msql);
return rs;
}
catch(SQLException ex)
{
System.out.println(ex.toString());
}
}
}
错误提示为:
"Dboperation.java": Error #: 360 : unreported exception: java.lang.ClassNotFoundException; must be caught or declared to be thrown at line 13, column 16
"Dboperation.java": Error #: 466 : method does not return a value at line 23, column 4
|
Class.forName()方法会抛出ClassNotFoundException异常。需要在catch中加入
catch(ClassNotFoundException cnfe){
.....
}
第二个,建议把 return rs;一句移到catch{}之后。程序可读性更好,也不用写太多的return语句。
catch(ClassNotFoundException cnfe){
.....
}
第二个,建议把 return rs;一句移到catch{}之后。程序可读性更好,也不用写太多的return语句。
|
由于你的rs_jiequ()方法需要返回值,而当程序由于出现异常进入catch()块中后,方法在返回时仍然需要返回值。实际上,程序的执行流程是:
正常操作->返回 OR
出现异常->返回
两种情况下都需要返回值。
由于可以在catch()中处理异常,没有必要用返回值来标识不同情况下不同的返回值,可以在开始时给rs 一个null值,如果程序是正常执行的,则rs会被赋值,否则会按null返回。
说得清楚了吗?
正常操作->返回 OR
出现异常->返回
两种情况下都需要返回值。
由于可以在catch()中处理异常,没有必要用返回值来标识不同情况下不同的返回值,可以在开始时给rs 一个null值,如果程序是正常执行的,则rs会被赋值,否则会按null返回。
说得清楚了吗?