Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MVC GUI设计-模型中的IOException?_Java_User Interface_Model View Controller_Javafx - Fatal编程技术网

Java MVC GUI设计-模型中的IOException?

Java MVC GUI设计-模型中的IOException?,java,user-interface,model-view-controller,javafx,Java,User Interface,Model View Controller,Javafx,我正在用JavaFX编写一个使用MVC(模型、视图、控制器)设计的GUI 我的程序做的第一件事是从文本文件中读取数据,而文本文件可能会抛出IOException,也可能不会抛出IOException,我希望通过view类在GUI中显示为错误消息对话框 按照MVC设计,我知道必须读取模型类中的文件,但是模型类不允许与视图类交互(甚至不知道)。那么,如何将异常传递给视图类以在MVC下显示呢 目前,我正在从控制器类读取文件,并将异常传递给视图类(控制器可以与视图交互),但这破坏了控制器的用途,控制器只

我正在用JavaFX编写一个使用MVC(模型、视图、控制器)设计的GUI

我的程序做的第一件事是从文本文件中读取数据,而文本文件可能会抛出IOException,也可能不会抛出IOException,我希望通过view类在GUI中显示为错误消息对话框

按照MVC设计,我知道必须读取模型类中的文件,但是模型类不允许与视图类交互(甚至不知道)。那么,如何将异常传递给视图类以在MVC下显示呢

目前,我正在从控制器类读取文件,并将异常传递给视图类(控制器可以与视图交互),但这破坏了控制器的用途,控制器只能用于处理事件并相应地更改视图


那么我有什么选择呢?我希望尽可能避免破坏MVC设计

通常,如果一个方法可能会抛出一个已检查的异常,但不知道如何处理它,那么它应该直接将它抛出给调用方。因此,如果模型有一个方法(或构造函数)可能抛出IO异常,那么该方法通常只会声明
抛出IOException
。您可能从控制器调用此模型方法以响应某些用户操作,因此控制器可以使用try-catch并更改视图以显示错误消息。如果您只遵循通常的异常处理过程,似乎不会违反MVC。@James_D啊,是的,我也这么认为,但是模型类构造函数的实现是一成不变的,也就是说,我不能更改构造的实现并声明它抛出异常。这就是为什么我要走一条“试抓”的路。嗯。。。如果您正在为模型制定规范,那么该规范应该真正包括在读取文件时发生错误时的行为。如果这还没有实现,选项包括:1。将IO异常包装为未经检查的异常,并将其抛出(实际上仍然违反规范),2。返回一个“特殊值”(例如null而不是空列表),然后可以在控制器中以与异常相同的方式处理该值,或3。在模型中包括一个
loadException
属性,您可以在catch块中设置该属性,然后签入控制器。@James\D谢谢!我选择了你的第三个建议,它很有魅力!