我正在开发一个任务管理日历应用程序,它将数据存储在数据库中,我遇到了这个问题。我有一个创建主swing应用程序的main_app类。它还创建一个CalendarDao(数据访问对象)对象,用于管理MySQL查询、更新等。
现在,如果CalendarDao出错,我想显示错误对话框消息。因此,当我创建dao对象时,我必须给它一个对主应用程序的引用。但是我想保持dao类的通用性,并且能够在不引用jframe子类的情况下使用它。所以,我创建了重载构造函数,一个使用jframes子类作为参数,另一个不使用(主类)。现在,当我调用接受jframe对象的构造函数时,我还想调用主构造函数,所以我这样定义它:
private MainApp mApp;
public calendarDAO(MainApp mAppRef){
try{
this();
} catch (Exception e){e.printStackTrace();}
mApp = mAppRef;
}
问题是,这不起作用,因为我的主构造函数抛出了异常,所以我必须将它放在try块中,现在我得到一个错误,说
构造函数调用必须是构造函数中的第一个语句
这样的问题怎么解决?我的软件设计/结构是否错误?帮忙?
最佳答案
应该抛出将从两个构造函数引发的异常
private MainApp mApp;
public calendarDAO(MainApp mAppRef) throws SomeExplicitException{
this();
mApp = mAppRef;
}
如果您能够处理异常,那么您应该按照madprogrammer的建议,创建一个工厂方法来创建您的对象