संभव डुप्लिकेट:
Is it possible to detect if an exception occurred before I entered a finally block?एक अंत में ब्लॉक में, मैं बता सकते हैं कि एक अपवाद फेंका जा चुका है
मैं एक कार्यप्रवाह विधि है कि काम करता है, और एक अपवाद है, तो एक फेंकता त्रुटि हुई। मैं अपने वर्कफ़्लो में रिपोर्टिंग मीट्रिक जोड़ना चाहता हूं। अंततः नीचे ब्लॉक में, क्या यह बताने का कोई तरीका है कि कोशिश/पकड़ ब्लॉक में से किसी एक तरीके ने अपवाद फेंक दिया है?
मैं अपना खुद का पकड़/फेंक कोड जोड़ सकता हूं, लेकिन एक क्लीनर समाधान पसंद करूंगा क्योंकि यह एक ऐसा पैटर्न है जिसे मैं अपने प्रोजेक्ट में पुन: उपयोग कर रहा हूं।
@Override
public void workflowExecutor() throws Exception {
try {
reportStartWorkflow();
doThis();
doThat();
workHarder();
} finally {
/**
* Am I here because my workflow finished normally, or because a workflow method
* threw an exception?
*/
reportEndWorkflow();
}
}
यह प्रश्न सुझाए गए एक का डुप्लिकेट हो सकता है, लेकिन यह कहना मुश्किल है, क्योंकि दूसरा सवाल काफी सराहनीय है। आखिरकार ब्लॉक को नियंत्रित करने की क्षमता को अवरुद्ध कर दिया गया है कि क्या ब्लॉक नियंत्रण के सामान्य प्रवाह में निष्पादित हो रहा है या फेंकने वाले अपवाद के कारण अत्यधिक उपयोगी होगा क्योंकि यह लेनदेन प्रसंस्करण को सरल बना देगा; हां, न तो जावा और न ही सी # वर्तमान में इस क्षमता को afaik प्रदान करते हैं। शर्म की बात है। –