Latest web development tutorials
×

C# หลักสูตร

C# หลักสูตร C# แนะนำโดยย่อ C# สิ่งแวดล้อม C# โครงสร้างหลักสูตร C# ไวยากรณ์พื้นฐาน C# ชนิดข้อมูล C# ประเภทการแปลง C# ตัวแปร C# คงที่ C# ผู้ประกอบการ C# ผู้พิพากษา C# การไหลเวียน C# บรรจุภัณฑ์ C# ทาง C# ประเภท nullable C# แถว(Array) C# เชือก(String) C# โครงสร้าง(Struct) C# แจกแจง(Enum) C# หมวดหมู่(Class) C# สืบทอด C# polymorphism C# ดำเนินงานมาก C# อินเตอร์เฟซ(Interface) C# namespaces(Namespace) C# สั่ง preprocessor C# นิพจน์ปกติ C# การจัดการข้อยกเว้น C# input และ output ไฟล์

C# การสอนที่ทันสมัย

C# คุณสมบัติ(Attribute) C# การสะท้อนกลับ(Reflection) C# คุณสมบัติ(Property) C# ทำดัชนี(Indexer) C# มอบความไว้วางใจ(Delegate) C# เหตุการณ์(Event) C# ตั้งค่า(Collection) C# ยาชื่อสามัญ(Generic) C# วิธีการที่ไม่ระบุชื่อ C# รหัสที่ไม่ปลอดภัย C# multithreading

C # การจัดการข้อยกเว้น

ความผิดปกติในระหว่างการแก้ปัญหาการทำงานของโปรแกรม C # เป็นข้อยกเว้นในการตอบสนองต่อสถานการณ์พิเศษที่เกิดขึ้นเมื่อโปรแกรมทำงานเช่นความพยายามที่จะหารด้วยศูนย์

ยกเว้นมีให้โปรแกรมควบคุมจะถูกโอนจากส่วนหนึ่งเพื่อเป็นส่วนหนึ่งของวิธีการอื่น C #การจัดการข้อยกเว้นอยู่บนพื้นฐานของสี่คำสำคัญดังกล่าวข้างต้น:ลองจับในที่สุดและโยน

  • ลอง: บล็อกลองระบุข้อยกเว้นเฉพาะของบล็อกของรหัสที่จะสามารถใช้งานได้ตามด้วยหนึ่งหรือมากกว่าจับบล็อก
  • จับ: จับโปรแกรมยกเว้นผ่านการจัดการข้อยกเว้นจับคำหลักที่บ่งบอกถึงความผิดปกติของการจับภาพ
  • ในที่สุด: สุดท้ายบล็อกจะใช้ในการดำเนินการคำสั่งที่กำหนดโดยไม่คำนึงว่ายกเว้นจะโยนจะดำเนินการตัวอย่างเช่นถ้าคุณเปิดแฟ้มโดยไม่คำนึงว่าควรจะมีไฟล์ยกเว้นจะปิด
  • โยน: เมื่อมีปัญหาเกิดขึ้นโปรแกรมพ่นยกเว้นการใช้คำหลักที่จะเสร็จสมบูรณ์โยน

ไวยากรณ์

สมมติว่าบล็อกที่ผิดปกติวิธีการใช้คำหลักลองและจับข้อยกเว้น รหัสลอง / จับบล็อกมีการป้องกันรหัสใช้ลอง / จับดังแสดงในไวยากรณ์ต่อไปนี้:

ความพยายาม
{
   } // คำชี้แจงที่ทำให้เกิดข้อยกเว้น
catch (ExceptionName E1)
{
   // การจัดการรหัสข้อผิดพลาด}
catch (ExceptionName E2)
{
   // การจัดการรหัสข้อผิดพลาด}
catch (ExceptionName En)
{
   // การจัดการรหัสข้อผิดพลาด}
ในที่สุด
{
   // งบในการดำเนินการ}

คุณสามารถแสดงรายการงบจับหลายที่จะจับความแตกต่างของข้อยกเว้นเพื่อป้องกันไม่ให้บล็อกลองสร้างข้อยกเว้นหลายภายใต้สถานการณ์ที่แตกต่างกัน

เรียนข้อยกเว้นใน C #

C # ข้อยกเว้นคือการใช้การแสดงชั้นเรียน เรียนข้อยกเว้นใน C # ส่วนใหญ่โดยตรงหรือโดยอ้อมมาจากชั้นSystem.ExceptionSystem.ApplicationException และSystem.SystemExceptionระดับได้มายกเว้นชั้นเรียน System.Exception

การสนับสนุนระดับSystem.ApplicationException สร้างขึ้นโดยข้อยกเว้นแอพลิเคชันดังนั้นข้อยกเว้นโปรแกรมเมอร์ที่กำหนดไว้ควรจะมาจากชั้นนี้

ระดับSystem.SystemException เป็นระบบที่กำหนดไว้ล่วงหน้าทุกชั้นฐานสำหรับข้อยกเว้น

ตารางต่อไปนี้บางรายการที่ได้รับจากการเรียนการยกเว้น Sytem.SystemException ระดับที่กำหนดไว้ล่วงหน้า:

异常类描述
System.IO.IOException处理 I/O 错误。
System.IndexOutOfRangeException处理当方法指向超出范围的数组索引时生成的错误。
System.ArrayTypeMismatchException处理当数组类型不匹配时生成的错误。
System.NullReferenceException处理当依从一个空对象时生成的错误。
System.DivideByZeroException处理当除以零时生成的错误。
System.InvalidCastException处理在类型转换期间生成的错误。
System.OutOfMemoryException处理空闲内存不足生成的错误。
System.StackOverflowException处理栈溢出生成的错误。

การจัดการข้อยกเว้น

C # และพยายามจับบล็อกที่ให้บริการในรูปแบบของโปรแกรมการจัดการโครงสร้างการยกเว้น การใช้บล็อกเหล่านี้งบโปรแกรมหลักและงบจัดการข้อผิดพลาดแยกออกจากกัน

จัดการบล็อกเหล่านี้ข้อผิดพลาดคือการใช้ลองจับและในที่สุดคำหลักที่จะประสบความสำเร็จนี่เป็นข้อยกเว้นโยนเมื่อหารด้วยศูนย์ตัวอย่าง:

การใช้ระบบ
ErrorHandlingApplication namespace
{
    DivNumbers ระดับ
    {
        ผล int;
        DivNumbers ()
        {
            ผล = 0;
        }
        ส่วนโมฆะสาธารณะ (int num1, num2 int)
        {
            ความพยายาม
            {
                ผล = num1 / num2;
            }
            catch (DivideByZeroException จ)
            {
                Console.WriteLine ( "ข้อยกเว้นจับ: {0}", E);
            }
            ในที่สุด
            {
                Console.WriteLine ( "ผล: {0}" ผล);
            }

        }
        เป็นโมฆะคง main (String args [])
        {
            DivNumbers d = DivNumbers ใหม่ ();
            d.division (25, 0);
            Console.ReadKey ();
        }
    }
}

เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:

ยกเว้นจับ: System.DivideByZeroException: พยายามที่จะหารด้วยศูนย์ 
ที่ ...
ผล: 0

สร้างข้อยกเว้นที่ผู้ใช้กำหนด

นอกจากนี้คุณยังสามารถกำหนดข้อยกเว้นของคุณเอง ระดับยกเว้นผู้ใช้กำหนดมาจากระดับApplicationExceptionตัวอย่างต่อไปนี้แสดงให้เห็นถึงจุดนี้:

การใช้ระบบ
UserDefinedException namespace
{
   TestTemperature ระดับ
   {
      เป็นโมฆะคง main (String args [])
      {
         อุณหภูมิอุณหภูมิ = อุณหภูมิใหม่ ();
         ความพยายาม
         {
            temp.showTemp ();
         }
         catch (TempIsZeroException จ)
         {
            Console.WriteLine ( "TempIsZeroException: {0}" e.Message);
         }
         Console.ReadKey ();
      }
   }
}
TempIsZeroException ระดับส่วนกลาง: ApplicationException
{
   TempIsZeroException สาธารณะ (ข้อความ String): ฐาน (ข้อความ)
   {
   }
}
อุณหภูมิระดับประชาชน
{
   อุณหภูมิ int = 0;
   โมฆะสาธารณะ showTemp ()
   {
      ถ้า (อุณหภูมิ == 0)
      {
         โยน (TempIsZeroException ใหม่ ( "อุณหภูมิศูนย์พบ"));
      }
      อื่น
      {
         Console.WriteLine ( "อุณหภูมิ: {0}" อุณหภูมิ);
      }
   }
}

เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:

TempIsZeroException: อุณหภูมิศูนย์พบ

Throwable

หากยกเว้นจะโดยตรงหรือโดยอ้อมมาจากชั้นSystem.Exception คุณสามารถโยนวัตถุคุณสามารถใช้คำสั่งบล็อกจับโยนไปโยนวัตถุปัจจุบันดังนี้

catch (ยกเว้นจ)
{
   ...
   โยน E
}