นี่คือสถานการณ์มาตรฐาน:
if(string.IsNullOrEmpty(Configuration.AppSettings["foobar"]))
throw new SomeStandardException("Application not configured correctly, bozo.");
ปัญหาคือฉันไม่แน่ใจว่าข้อยกเว้นSomeStandardException
ใดควรเป็นอย่างยิ่ง
ฉันอ่าน 3.5 Framework และพบผู้สมัครสองคนที่น่าจะเป็น: ConfigurationException
และConfigurationErrorsException
.
System.Configuration.ConfigurationException
ข้อยกเว้นที่เกิดขึ้นเมื่อเกิดข้อผิดพลาดของระบบคอนฟิกูเรชัน
หมายเหตุ
ConfigurationException
ยกเว้นจะโยนถ้าความพยายามในการประยุกต์ใช้ในการอ่านหรือเขียนข้อมูลไปยังแฟ้มการกำหนดค่า แต่ไม่ประสบความสำเร็จ สาเหตุที่เป็นไปได้บางประการอาจรวมถึง XML ที่ผิดรูปแบบในไฟล์คอนฟิกูเรชันปัญหาการอนุญาตไฟล์และคุณสมบัติการกำหนดค่าที่มีค่าไม่ถูกต้องบันทึก:
ConfigurationException
วัตถุจะยังคงเข้ากันได้ย้อนหลังConfigurationErrorsException
วัตถุแทนที่ระบบการกำหนดค่า
ข้อยกเว้นนี้ฟังดูสมบูรณ์แบบสำหรับสิ่งที่ฉันต้องการ แต่ถูกทำเครื่องหมายว่าล้าสมัยดังนั้น ixnay on atthay
สิ่งนี้ทำให้เรางงอย่างละเอียดConfigurationErrorsException
:
System.Configuration.ConfigurationErrorsException
ค่าปัจจุบันไม่ใช่หนึ่งในค่า EnableSessionState
อย่างที่คุณเห็นเอกสารประกอบนั้นไร้ประโยชน์อย่างสิ้นเชิง (เป็นแบบนั้นในความช่วยเหลือทั้งในพื้นที่และออนไลน์) การตรวจสอบในชั้นเรียนแสดงให้เห็นว่าฉันต้องการสิ่งที่ฉันต้องการมากเกินไป
โดยสรุปฉันต้องการข้อยกเว้นมาตรฐานที่ควรทิ้งเมื่อการตั้งค่าการกำหนดค่าแอปพลิเคชันขาดหายไปหรือมีค่าที่ไม่ถูกต้อง คุณคิดว่า Framework มีข้อยกเว้นดังกล่าวสำหรับแอปพลิเคชันที่จะใช้ (เห็นได้ชัดว่าเป็นเช่นนั้น แต่ถูกทำเครื่องหมายว่าล้าสมัยและถูกแทนที่ด้วยขอบเขตที่ใหญ่กว่ามาก )
พวกคุณใช้วิธีแก้ปัญหาอะไรหรือไม่และฉันจะต้องดูดมันขึ้นมาและยกเลิกข้อยกเว้นของตัวเองสำหรับสิ่งนี้หรือไม่?
แก้ไขภาคผนวก
มีบางคนถามว่าฉันสามารถระบุค่าเริ่มต้นได้หรือไม่และดำเนินการต่อ ในบางกรณีใช่และในบางกรณีข้อยกเว้นจะไม่ถูกโยนทิ้ง อย่างไรก็ตามสำหรับการตั้งค่าบางอย่างจะใช้ไม่ได้ ตัวอย่างเช่นชื่อเซิร์ฟเวอร์ฐานข้อมูลและข้อมูลประจำตัวเซิร์ฟเวอร์การพิสูจน์ตัวตนและเส้นทางไปยังแอปพลิเคชันของบุคคลที่สามที่ติดตั้ง
นอกจากนี้ยังเป็นที่น่าสังเกตว่าแอปพลิเคชันที่ฉันใช้งานเป็นหลักคือแอปพลิเคชันคอนโซลที่ทำงานในโหมดแบตช์และฉันต้องการให้มีการยกเว้นที่ถูกจับโดยวิธีการหลักและบันทึกอย่างเหมาะสมหากสิ่งนั้นไม่ได้รับการกำหนดค่าอย่างเหมาะสม (เป็นรหัสเดิมที่ฉันได้รับมาและตอนนี้ถือว่าทุกอย่างเป็นพีช)
System.Configuration.ConfigurationErrorsException
อัปเดตเอกสารสำหรับแล้ว