Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.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 为什么即使调用了异常,我也没有收到任何错误消息?_Java - Fatal编程技术网

Java 为什么即使调用了异常,我也没有收到任何错误消息?

Java 为什么即使调用了异常,我也没有收到任何错误消息?,java,Java,我有以下三节课,请看一看: Main.java: Loader.java java 我甚至调试了这段代码,这让我得出结论,尽管errorMsg发生了变化,但自定义侦听器无法工作。 我遵循了这里提到的方法: 虽然那里的代码有效 请给我一个解决方案。 提前感谢。事件监听器这个名字没有什么神奇之处。当您设置errorMsg时,您需要实际启动它们,但没有办法告诉java:您能自动地使其工作吗 因此,在errorMsg=abc行之后,您可能需要notifyListener;,您的notifyListene

我有以下三节课,请看一看:

Main.java:

Loader.java

java

我甚至调试了这段代码,这让我得出结论,尽管errorMsg发生了变化,但自定义侦听器无法工作。 我遵循了这里提到的方法:

虽然那里的代码有效

请给我一个解决方案。
提前感谢。

事件监听器这个名字没有什么神奇之处。当您设置errorMsg时,您需要实际启动它们,但没有办法告诉java:您能自动地使其工作吗

因此,在errorMsg=abc行之后,您可能需要notifyListener;,您的notifyListener实现需要一个空保护:

if (onExceptionChangeListener != null) onExceptionChangeListener.onExceptionChanged(errorMsg);

或者更好的是,创建一个方法updateErrorMsgString msg,它更新errorMsg并通知侦听器它是否为null。

名称“事件侦听器”没有什么神奇之处。当您设置errorMsg时,您需要实际启动它们,但没有办法告诉java:您能自动地使其工作吗

因此,在errorMsg=abc行之后,您可能需要notifyListener;,您的notifyListener实现需要一个空保护:

if (onExceptionChangeListener != null) onExceptionChangeListener.onExceptionChanged(errorMsg);
或者更好的是,创建一个方法updateErrorMsgString msg,它更新errorMsg并通知侦听器它是否为null。

对notifyListener的调用仅在调用SetOneExceptionChangeListener时完成,而不是在errorMsgis设置时。对notifyListener的调用仅在调用SetOneExceptionChangeListener时完成,而不是在设置errorMsgis时完成
package com.tsc.sendit.worker;

import java.io.File;
import java.io.FileNotFoundException;

public class Divider {

    private static Divider divider;

    private String errorMsg;
    private OnExceptionChangeListener onExceptionChangeListener;

    private Divider() {}

    public static Divider getInstance() {
        if(divider==null)
            divider = new Divider();
        return divider;
    }

    public void setOnExceptionChangeListener(OnExceptionChangeListener onExceptionChangeListener) {
        this.onExceptionChangeListener = onExceptionChangeListener;
        if(errorMsg!=null) {
            notifyListener();
        }
    }

    private void notifyListener() {
        onExceptionChangeListener.onExceptionChanged(errorMsg);
    }

    public void setFile(File file) {
        startDividing();
    }

    private void startDividing() {
        try {
            throw new FileNotFoundException();
        } catch (FileNotFoundException e) {
            errorMsg = "abc";
        }
    }

    interface OnExceptionChangeListener {
        void onExceptionChanged(String errorMsg);
    }
}

if (onExceptionChangeListener != null) onExceptionChangeListener.onExceptionChanged(errorMsg);