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