दिलचस्प पोस्ट
मैं सप्ताह की शुरुआत के लिए दिनांक समय कैसे प्राप्त करूं? TypeScript किसी भी बनाम ऑब्जेक्ट GetImageData () त्रुटि को ठीक कैसे करें कैनवास को क्रॉस-मूल डेटा से दूषित कर दिया गया है? सूची दृश्य के लिए Android कस्टम पंक्ति आइटम JQuery एक तत्व से जुड़े सभी सीएसएस शैलियों मिल सकता है? मैं एक स्ट्रिंग कैसे यूआरएल सांकेतिक शब्दों में बदलना है वर्तमान संदर्भ में नाम 'नियंत्रण का नाम' मौजूद नहीं है यदि मौजूद है तो मैं कैसे अद्यतन कर सकता हूँ, यदि नहीं (उर्फ "upsert" या "मर्ज") MySQL में सम्मिलित करें? क्या मुझे जैक्सन के ऑब्जेक्टमैपर को एक स्थिर क्षेत्र के रूप में घोषित करना चाहिए? कैसे हैशोड () और पहचान HashCode () पीछे के अंत में काम करते हैं? सी # मैं कैसे जांच सकता हूँ कि कोई URL मौजूद है / मान्य है? एक पाठ फ़ाइल में यूनिकोड पाठ लिख रहे हैं? जावा के साथ hdfs में एक फाइल लिखें Linq में संस्थाओं के लिए स्ट्रिंग को बदलने में समस्या पीएचपी का इस्तेमाल करते हुए एक ज़िप फ़ाइल के रूप में कई फाइलें डाउनलोड करें

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

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

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 से विरासत में जाना होगा, है ना?

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

नहीं, आप "वंशानुक्रम" गैर-डिफॉल्ट कन्स्ट्रक्टर नहीं हैं, आपको अपनी कक्षा में स्ट्रिंग लेने वाले को परिभाषित करने की आवश्यकता है। आम तौर पर आप अपने कन्स्ट्रक्टर में 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) – निर्दिष्ट त्रुटि संदेश के साथ एक अपवाद तैयार करता है। एक विस्तार संदेश एक स्ट्रिंग है जो इस विशेष अपवाद के लिए त्रुटि की स्थिति का वर्णन करता है।

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