दिलचस्प पोस्ट
Laravel 4: कैसे एक कच्चे एसक्यूएल चलाने के लिए? गैर-विभाजन से विभाजित तालिकाओं में माइग्रेट करना नीग्रै सरणियों के स्वैप स्लाइस चरित्र प्रदर्शन पाठ एनीमेशन द्वारा एंड्रॉइड कैरेक्टर क्रोनजोब नहीं चल रहा है कार्यक्रम में मूल्य परिवर्तन के साथ कार्ट में उत्पाद जोड़ें गतिशील रूप से बनाए गए नियंत्रणों तक पहुंच (सी #) ईमेल में इनलाइन छवि भेजें बुरा क्यों असाइन कर रहे हैं? जैक्सन सीरियललाइज़ेशन: रिक्त मूल्यों (या रिक्त) को अनदेखा करें कैसे MongoDB में लेनदेन की कमी के आसपास काम करने के लिए? अजगर नीडिंत सूची समझ वर्डल जैसे शब्द बादल को क्रियान्वित करने के लिए एल्गोरिथ्म पायथन: defaultdict का डिफ़ॉल्ट दिशानिर्देश? मैं एमएस एक्सेस में एक संग्रहीत प्रक्रिया कैसे करूं?

जावा में कस्टम अपवाद वर्ग को परिभाषित कैसे करें, सबसे आसान तरीका है?

मैं अपना अपवाद वर्ग को सबसे आसान तरीके से परिभाषित करने की कोशिश कर रहा हूं, और यह वही है जो मुझे मिल रहा है:

public class MyException extends Exception {} public class Foo { public bar() throws MyException { throw new MyException("try again please"); } } 

यह जावा संकलक कहता है:

 cannot find symbol: constructor MyException(java.lang.String) 

मुझे लगा था कि इस निर्माता को java.lang.Exception से विरासत में जाना होगा, है ना?

Solutions Collecting From Web of "जावा में कस्टम अपवाद वर्ग को परिभाषित कैसे करें, सबसे आसान तरीका है?"

नहीं, आप "वंशानुक्रम" गैर-डिफॉल्ट कन्स्ट्रक्टर नहीं हैं, आपको अपनी कक्षा में स्ट्रिंग लेने वाले को परिभाषित करने की आवश्यकता है। आम तौर पर आप अपने कन्स्ट्रक्टर में super(message) उपयोग अपने पैरेंट कन्स्ट्रक्टर को करने के लिए करते हैं। उदाहरण के लिए, इस तरह:

 public class MyException extends Exception { public MyException(String message) { super(message); } } 

एक विशिष्ट कस्टम अपवाद जिसे मैं परिभाषित करता हूं, वह ऐसा कुछ है:

 public class CustomException extends Exception { public CustomException(String message) { super(message); } public CustomException(String message, Throwable throwable) { super(message, throwable); } } 

मैं ईक्लीपस का इस्तेमाल करते हुए एक टेम्पलेट भी तैयार करता हूं इसलिए मुझे सभी चीजों को बार-बार लिखना नहीं पड़ता है

अगर आप एक्लिप्स में नए क्लास डायलॉग का उपयोग करते हैं, तो आप सुपरक्लास फ़ील्ड को java.lang.Exception सेट कर सकते java.lang.Exception और "कन्स्ट्रक्टरर्स सुपरक्लस" की जांच कर सकते हैं और यह निम्न उत्पन्न करेगा:

 package com.example.exception; public class MyException extends Exception { public MyException() { // TODO Auto-generated constructor stub } public MyException(String message) { super(message); // TODO Auto-generated constructor stub } public MyException(Throwable cause) { super(cause); // TODO Auto-generated constructor stub } public MyException(String message, Throwable cause) { super(message, cause); // TODO Auto-generated constructor stub } } 

डिफॉल्ट कन्स्ट्रक्टर में super() को कॉल करने के बारे में नीचे दिए गए प्रश्न के जवाब में, ओरेकल में यह कहना है :

नोट: यदि कोई निर्माता स्पष्ट रूप से एक सुपरक्लाइस कन्स्ट्रक्टर का उपयोग नहीं करता है, तो जावा कंपाइलर सुपरक्लास के न-आर्गिमेंट कन्स्ट्रक्टर को स्वचालित रूप से कॉल को सम्मिलित करता है।

इसके लिए कारण जावा प्लेटफार्म के विरासत लेख में समझाया गया है जो कहते हैं:

"उप-वर्ग अपने सुपर वर्ग से सभी सदस्यों (खेतों, विधियों और नेस्टेड वर्ग) को संभालता है। कन्स्ट्रक्टर्स सदस्य नहीं हैं , इसलिए वे उप-कक्षाओं द्वारा विरासत में नहीं लाए जाते हैं, लेकिन उप-कक्षा के निर्माता को उपवर्ग से लागू किया जा सकता है।"

 package customExceptions; public class MyException extends Exception{ public MyException(String exc) { super(exc); } public String getMessage() { return super.getMessage(); } } 

 import customExceptions.MyException; public class UseCustomException { MyException newExc=new MyException("This is a custom exception"); public UseCustomException() throws MyException { System.out.println("Hello Back Again with custom exception"); throw newExc; } public static void main(String args[]) { try { UseCustomException use=new UseCustomException(); } catch(MyException myEx) { System.out.println("This is my custom exception:" + myEx.getMessage()); } } } 

अपवाद वर्ग के दो कन्स्ट्रक्टर हैं

  • public Exception() – यह किसी भी अतिरिक्त जानकारी के बिना एक अपवाद का निर्माण करता है। अपवाद का नमूना आम तौर पर वर्ग के नाम से अनुमान लगाया गया है।
  • public Exception(String s) – निर्दिष्ट त्रुटि संदेश के साथ एक अपवाद तैयार करता है। एक विस्तार संदेश एक स्ट्रिंग है जो इस विशेष अपवाद के लिए त्रुटि की स्थिति का वर्णन करता है।

यदि आप अपवाद से वारदात करते हैं, तो आपको एक कन्स्ट्रक्टर प्रदान करना होगा जो स्ट्रिंग को पैरामीटर के रूप में लेता है (इसमें त्रुटि संदेश शामिल होगा)।