ऐसा क्यों है कि जब मैं इस कोड के चारों ओर एक स्विंगवर्कर लपेटता हूं तो यह अब एक अपवाद को फेंकने की रिपोर्ट नहीं करता है?स्विंगवर्कर के अंदर फेंकने पर मेरा जावा अपवाद स्टैक ट्रेस क्यों नहीं प्रिंट करता है?
import java.security.InvalidParameterException;
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;
public class Test {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new SwingWorker<Void, Void>() {
@Override
protected Void doInBackground() throws Exception {
IntegerString s = new IntegerString("EIGHT");
return null;
}
}.execute();
}
});
}
}
class IntegerString {
public IntegerString(String s) {
if (!isInteger(s)) {
System.out.println("...throwing exception.");
throw new InvalidParameterException("Thrown.");
}
// ...
}
static boolean isInteger(String str) {
if (str == null) {
return false;
}
int length = str.length();
if (length == 0) {
return false;
}
int i = 0;
if (str.charAt(0) == '-') {
if (length == 1) {
return false;
}
i = 1;
}
for (; i < length; i++) {
char c = str.charAt(i);
if (c <= '/' || c >= ':') {
return false;
}
}
return true;
}
}
क्या इसे फेंक दिया गया है या रिपोर्ट नहीं किया गया है? –
इसकी रिपोर्ट नहीं की जा रही है। मुझे लगता है कि इसे फेंक दिया जा रहा है लेकिन स्टैकट्रैक प्रिंट नहीं कर रहा है। – sdasdadas
मेरा अनुमान है कि एक अपवाद अभी भी फेंक दिया गया है, लेकिन आंतरिक हैंडलर का कॉल 'doInBackground()' को अपवादों को अनदेखा करने के लिए डिज़ाइन किए गए प्रयास-पकड़ कथन में लपेटा गया है। – Vulcan