Алдаа хаяулах, throw оператор

Тодорхой нөхцөлд жишээ нь тоог тэгд хуваах гэх мэт тохиолдолд систем өөрөө онцгой нөхцлийн генерацийг хийдэг. Гэхдээ C# хэл throw оператороор онцгой нөхцлийг гараар үүсгэх боломжийг олгодог. Өөрөөр хэлбэл throw оператороор бид өөрсдөө онцгой нөхцлийг үүсгэн түүнийг програмийн ажиллагааны үед дуудаж болно гэсэн үг.

Жишээ нь хэрэглэгчийн нэрийг аван консолд үзүүлэх

try
{
    Console.Write("Нэрээ оруулна уу: ");
    string? name = Console.ReadLine();
    if (name== null || name.Length < 2)
    {
        throw new Exception("Нэрийн урт 2 тэмдэгтээс бага байна.");
    }
    else
    {
        Console.WriteLine($"Таны нэр: {name}");
    }
}
catch (Exception e)
{
    Console.WriteLine($"Алдаа: {e.Message}");
}

код байлаа гэе. Хэрвээ нэрийн урт 2 тэмдэгтээс бага байвал онцгой нөхцлийг үүсгэнэ. Үүний тулд throw операторийн дараа онцгой нөхцлийн обьектийг заагаад түүний байгуулагчаар алдааны мэдээллийг дамжуулна. Exception төрлийн оронд бид онцгой нөхцлийн дурын обьектийг ашиглаж болох нь ойлгомжтой. Дараа нь catch блокт бидний үүсгэсэн онцгой нөхцлийн боловсруулалтыг хийнэ.
Ийм байдлаар бид програмийн дурын хэсэгт онцгой нөхцлийг үүсгэх боломжтой. Гэхдээ throw операторийн ард онцгой нөхцлийн обьектийг заалгүй ашиглах өөр хэлбэр бий. throw операторийг ингэж зөвхөн catch блокт хэрэглэж болдог. Жишээ нь

try
{
    try
    {
        Console.Write("Нэрээ оруулна уу: ");
        string? name = Console.ReadLine();
        if (name == null || name.Length < 2)
        {
            throw new Exception("Нэрийн урт 2 тэмдэгтээс бага байна.");
        }
        else
        {
            Console.WriteLine($"Таны нэр: {name}");
        }
    }
    catch (Exception e)
    {
        Console.WriteLine($"Алдаа: {e.Message}");
        throw;
    }
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}

Энэ тохиолдолд 2 тэмдэгтээс бага урттай нэрийг оруулахад үүсэх онцгой нөхцлийг дотоод catch блок боловсруулна. Гэхдээ энэ блокт throw операторийг ашигласан тул онцгой нөхцлийг цааш гадаад catch блокт дамжуулна. Энд өмнөх блокт ирсэн онцгой нөхцөл дамжин ирэх учраас консолд дээрхтэй ижил мэдээллийг үзүүлнэ.

Мэдээлэл таалагдсан бол найзуудтайгаа хуваалцаарай.

  Нээгдсэн тоо: 1466 Төлбөртэй

 үүсвэр:

Өмнөх хичээлээр бид делегатын талаар тодорхой авч үзсэн. Энэ хичээлээр өмнөх хичээлд үзсэн зүйлүүдийг үргэлжлүүлэн үйл явдал гэдэг ойлголтыг авч үзнэ. Иймээс хичээлийн материалыг үзэхийн өмнө Делегат ба үйл явдал 1 хичээлийг сайтар судлан ойлгосон байх шаардлагатай.

Нэгдсэн /ерөнхийлөгдсөн/ делегат.

Дараах дохиолдолыг авч үзье. Бидэнд void (string) тодорхойлогчид тохирох аргад холбоотой CountDelegate гэсэн делегат байлаа гэж үзье. Яваандаа програмын ажиллагааны кодод void (string) тодорхойлогчид тохирох аргад холбоотой бас нэгэн TimesDelegate гэсэн делегат хэрэгтэй болох тохиолдол гарч ирэх бүрэн боломжтой. Ийм байдлаар 3 дахь 4 дэхь тохиолдлууд гарч болно.

  Нээгдсэн тоо: 336 Бүртгүүлэх

Зочин (Visitor) паттерн классуудыг өөрчлөхгүйгээр тэдгээрийн обьектуудын үйлдлийг тодорхойлох боломжийг олгоно. Зочин хэвийг ашиглахдаа классуудын хоёр ангилалыг тодорхойлно. Нэг дэх нь шинээр үйлдэл тодорхойлох хэрэгтэй элементүүдэд хоёрдахь нь тухайн үйлдлийг тодорхойлох зочдод зориулагдана.шалгаад үзээрэй.

  Нээгдсэн тоо: 3379 Төлбөртэй

Обьект хандлагат програмчлал encapsulation - хайрцаглалт, inheritance - удамшилт, polymorphism - полиморфизм гэсэн гурван үндсэн зарчим дээр суурилдаг гэдгийг өмнөх хичээлүүдэд үзсэн. Энэ хичээлээр polymorphism - полиморфизм зарчмын талаар үзэх болно. Монголоор орчуулгад тохирох үгийг би олж чадаагүй. Полиморфизм гэдэг нь суурь классын ажиллагааны төлөв байдлыг хүүхэд класст өөрчлөхийг хэлнэ. Ойлгомжгүй байна уу. Гэхдээ үнэндээ бол тийм нарийн зүйл биш.

  Нээгдсэн тоо: 1675 Төлбөртэй

Бид өмнөх хичээлээр битүүмжлэгдсэн, статик классуудын талаар үзсэн. ОХП-д классууд чухал үүрэгтэй нь ойлгомжтой. Иймээс класуудын төрлүүдийг мэдээд зогсохгүй тэдгээрийг хаана хэрхэн ашиглахыг маш зөв ойлговол таны код цэгцтэй, ойлгомжтой, өөрчлөлт, шинэчлэл хийхэд уян хатан болдог. 

Програмчлалын аргачлал Singleton

Статик арга, классыг хэрхэн ашиглах жишээ болгоод Singleton гэдэг өргөн дэлгэрсэн програмчлалын  аргачлалыг авч үзье. Програм зохиогчдын дунд энэхүү аргачлалын талаар эерэг, сөрөг янз бүрийн үзэл бодлууд байдаг гэдгийг хэлэх нь зүйтэй.

Үйл явдал /event/ тодорхой үйлдэл хийгдсэн талаар системд мэдэгддэг. Хэрвээ бид энэхүү үйлдлийг ажиглах хэрэгтэй бол яг энд…

Нээгдсэн тоо : 289

 

Манай төсөл олон хуудсуудтай болон тэдгээрийн хооронд динамикаар шилжилт хийж байгаа ч тухайн үед шилжилт хийгдсэн хуудаст тохирох…

Нээгдсэн тоо : 369

 

Зочин (Visitor) паттерн классуудыг өөрчлөхгүйгээр тэдгээрийн обьектуудын үйлдлийг тодорхойлох боломжийг олгоно. Зочин хэвийг ашиглахдаа классуудын хоёр ангилалыг тодорхойлно.…

Нээгдсэн тоо : 336

 

Лямбда-илэрхийлэл нь нэргүй аргын хураангуй бичилтийг илэрхийлнэ. Лямбда-илэрхийлэл утга буцаадаг, буцаасан утгыг өөр аргын…

Нээгдсэн тоо : 431

 

Кодийн сайжруулалт /рефакторинг/ хичээлээр програмийн кодоо react -ийн зарчимд нийцүүлэн компонентод салгасан.…

Нээгдсэн тоо : 481

 

Хадгалагч (Memento) хэв обьектын дотоод төлвийг түүний гадна гаргаж дараа нь хайрцаглалтын зарчмыг зөрчихгүйгээр обьектыг сэргээх боломжийг олгодог.

Нээгдсэн тоо : 504

 

Делегаттай нэргүй арга нягт холбоотой. Нэргүй аргуудыг делегатийн хувийг үүсгэхэд ашигладаг.
Нэргүй аргуудын тодорхойлолт delegate түлхүүр үгээр…

Нээгдсэн тоо : 596

 

Математикт харилцан урвуу тоонууд гэж бий. Ямар нэгэн тооны урвуу тоог олохдоо тухайн тоог сөрөг нэг зэрэг дэвшүүлээд…

Нээгдсэн тоо : 689

 

Төсөлд react-router-dom санг оруулан чиглүүлэгчдийг бүртгүүлэн тохируулсан Санг суулган тохируулах хичээлээр бид хуудас…

Нээгдсэн тоо : 723

 
Энэ долоо хоногт

Хоёр тойрог гадна талаараа шүргэлцсэн. Нэг тойргийн шүргэгч нь нөгөө тойргийнхоо төвийг дайран гарсан. Шүргэлтийн цэгээс хоёрдахь тойргийн төв хүртэлх зай нь энэ тойргийн радиусаас 3 дахин урт. Нэгдүгээр тойргийн урт хоёрдугаар тойргийн уртаас хэд дахин их вэ?

Нээгдсэн тоо : 1553

 

тэгшитгэлийг бод.

Нээгдсэн тоо : 2013

 

бол илэрхийллийн утгыг ол.

Нээгдсэн тоо : 990