में अपवाद मैंने इसके उत्तर के लिए एसओ के आसपास खोला है, और अब तक का सबसे अच्छा मुझे here है, हालांकि यह स्थिर रचनाकारों के उदाहरणों के लिए तैयार है; मैं केवल क्लासिक का उपयोग कर रहा हूं।स्थिर कन्स्ट्रक्टर
मेरे कोड:
public static class MailHelper {
private static string mailHost;
static MailHelper() {
var mailSettings = ConfigurationManager.GetSection("MailSettings") as NameValueCollection;
if (null == mailSettings) {
throw new ConfigurationErrorsException("Missing Mail Settings in the configuration file");
}
mailHost = ConfigurationManager.AppSettings["mailHost"];
if (null == mailHost) {
throw new ConfigurationErrorsException("Missing mailHost setting in the configuration file");
}
}
public static void SendMail(MailMessage Message) {
...
}
}
try {
MailHelper.SendMail(Message);
}
catch (ConfigurationErrorsException exc) {
...
}
// ???
MailHelper.SendMail(Message);
.
तो अगर स्थिर निर्माता एक अपवाद पहली बार यह कहा जाता है, क्या दूसरी बार मैं स्थिर SendMail() विधि तक पहुँचने का प्रयास होता है फेंकता है?
पीएस: क्षमा करें अगर आपको K& आर ब्रेस स्टाइल के स्ट्रॉस्ट्रप के संस्करण को पसंद नहीं है, लेकिन ब्रेसिज़ को अपनी पसंदीदा ऑलमैन शैली में बदलने के लिए मेरी पोस्ट को संपादित न करें। धन्यवाद।
यह असफल होना चाहिए, लेकिन अपने लिए कोशिश करने में क्या गलत है? –
मुझे नहीं लगता कि यह वास्तव में एक (स्थैतिक) कन्स्ट्रक्टर से फेंकने के लिए समझ में आता है, क्योंकि तब कक्षा एक अस्थिर स्थिति में है (पूरी तरह शुरू नहीं हुई)। एक स्पष्ट 'इनिट()' फ़ंक्शन जिसे आप उपयोग से पहले कॉल करते हैं, बनाने के बारे में (इसे पहले से शुरू होने पर कुछ भी नहीं करना चाहिए), और यदि यह अपवाद फेंकता है, * कक्षा * – Cameron
पोंटस का उपयोग न करें> मैंने सोचा कि जॉन को कुछ चाहिए अधिक अंक:) –