new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println("run");
throw new SomeRandomException();
}
}, 1000, 1000);
आउटपुट: (अपवाद फेंक दिया जाता है)जावा टाइमर वर्ग: टाइमर कार्य निष्पादित करने के लिए रोक अगर कार्यों में से एक में अपवाद फेंक दिया है
यहाँ समस्या यह है रन: मैं विशिष्ट जांच करने के लिए एक टाइमर कार्य की जरूरत है डेटाबेस में स्थितियां (या कुछ और)। यह ठीक काम करता है, लेकिन कभी-कभी डेटाबेस (या कुछ और) कुछ त्रुटियों को देता है, अपवाद फेंक दिया जाता है और टाइमर दुर्घटनाग्रस्त हो जाता है, और तब कोई भी टाइमर कार्य फिर से निष्पादित नहीं होता है। क्या कोई टाइमर कार्यान्वयन है जो अपवाद के बाद run()
में फेंकने के बाद काम करता रहता है।
मैं
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
try {
System.out.println("run");
throw new SomeRandomException();
} catch (Exception e) {
System.out.println("dummy catch");
}
}
}, 1000, 1000);
लेकिन यह लंगड़ा लगता है।
अन्य विकल्प टाइमर क्लास का अपना कार्यान्वयन लिखता है, रन विधि के अपवादों को निगलता है (जो सही नहीं लगता है)।
आप 'पकड़ने के लिए Error's रूप में अच्छी तरह या वे चुपचाप साथ ही अपने कार्य को मारने की जरूरत है। –