"Minta Ampun Bukan Izin": Penjelasan Teknikal
Dalam pengaturcaraan, frasa "minta ampun bukan izin" menerangkan dua gaya pengekodan yang berbeza :
"Minta Izin" Gaya:
if can_do_operation(): perform_operation() else: handle_error_case()
"Minta Ampun" Gaya:
try: perform_operation() except Unable_to_perform: handle_error_case()
Dalam pendekatan "minta izin", kehadiran can_do_operation () check menghalang panggilan perform_operation() daripada dilaksanakan jika operasi tidak dapat dilakukan. Walau bagaimanapun, pendekatan ini bergantung pada ketepatan semakan can_do_operation(), yang mungkin tidak selalu boleh dipercayai dalam persekitaran dinamik atau apabila berurusan dengan sumber luaran.
Faedah "Minta Pengampunan"
Gaya "minta ampun" menawarkan beberapa faedah:
Contoh: Akses Atribut Contoh
Dalam contoh anda, anda bertanya tentang penggunaan "minta ampun" semasa mengakses atribut contoh. Walaupun biasanya dianggap sebagai ralat pengaturcara, mengakses atribut yang tidak wujud boleh menjadi senario yang sah, seperti apabila berurusan dengan bahagian objek pilihan.
Daripada menguji kewujudan atribut (foo.bar) dengan pengendali pengecualian, lebih Pythonic untuk menyemak sama ada atribut itu bukan Tiada. Untuk atribut pilihan, atribut bar biasanya dimulakan kepada Tiada pada mulanya dan ditetapkan kepada nilai yang bermakna jika tersedia. Ini membolehkan ujian berikut:
if foo.bar is not None: handle_optional_part(foo.bar) else: default_handling()
Kesimpulan
Prinsip "minta ampun bukan izin" mengesyorkan menerima pengecualian sebagai bahagian semula jadi dalam pelaksanaan program, terutamanya apabila berurusan dengan fungsi pilihan atau interaksi sumber luaran. Ia memberikan fleksibiliti dan kebolehsuaian yang lebih besar dalam persekitaran dinamik dan serentak, sambil masih mendayakan pengendalian ralat melalui mekanisme pengendalian pengecualian.
Atas ialah kandungan terperinci Minta Ampun, Bukan Izin: Bilakah Pengendalian Pengecualian Lebih Baik Daripada Cek Terdahulu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!