1. Trang chủ
  2. » Công Nghệ Thông Tin

Kỹ thuật và thủ thuật lập trình hướng đối tượng PHP tập 2 phần 2 nguyễn minh, lương phúc

133 292 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

155 C h n g 10: x lý lỗi PH ẨN fln ninh xử lộ sư cô' Chiùyitg 10: x ỉý cá c lỗi Cbươĩtg II: Bào vệ an toàn PHP Chươĩtg 12: M rộng PHP 156 C h n g 10: x iý lỗỉ Xứ lụ iôi Nhữtig kỹ k h i niệm chinh u T ìm h i ể i i c c c ắ p l ỗ i c ủ a P H P ẵ ! D i ề ĩ i k ũ iỂ n c c t ô i n a o đ iíỢ c h i ể n i h ị t r u n g s c n p t P H Ỉ ’ * B ỏ q u a p h iíơ n g th ứ c x lý lỗ i m ặ c đ ịn h c ủ a P H P v c h u y ể n h n g c c lỗ i s a n g m ộ t h m tù y ỷ M T ìn t h i ổ ỉ t c c h t o v X ĩ} l ý c c n ^ o i l ệ K T ự đ ộ n g g h i n b ậ l k ý ( lo g ) c c lỗ i s a n g m ộ l f i l e h o ặ c đ ỉ a c h ỉ e - n i a i l ^ T o m ộ t b a c k ir a c e đ ể g ỡ rố i c c lồ i s c rip t M ột k h niệm sai lầm thường th ấ y đặc b iệ t tro n g số ngưdi p h t triể n có k in h nghiệm m ột chương trìn h "tốt” m ột chương trìn h làm việc k h ô n g có lỗi Thực tế, điều n ày không h o àn toàn đúng: Một đ ịn h nghĩa rõ có th ể chương trìn h dự đoán trước tâ't điều kiện lôi có th ể có g iải chúng m ột cách n h ấ t quán xác Viết chương trìn h "thông minh" tu â n theo đ ịnh n g h ĩa n ày m ột đòi hỏi nghệ th u ậ t kỹ K inh nghiệm tr í tưởng tượng đóng m ột vai trò quan trọng cho việc đ án h giá nguyên n h â n gây lỗi tiềm C h d n g 10: x lý lỗi 15 án dịnh n g h ĩa h n h động hiệu chỉnh không k ém p h ần quan trọng th â n ngôn ngữ lập trìn h dịnh nghĩa công cụ v chức nàng có sẵ n để bẫy giải lỗi T h ậ t m ay th ay , P H P giỏi lĩnh vực này; ngôn ngữ n ày có m ột framew ork tín h vi để giúp n h p h t triển đón b lỗi có h n h động sửa chữa Chương n ày giới thiệu bạn framework này, trìn h bày cho b ạn mô h ìn h ngoại lệ P H P 5.3 hướng dẫn bạn cách tạo thường trìn h xử lý lỗi tùy b iến theo nhu cầu ứng dụng PHP Xử lý lỗi S cript N hư bạn làm việc qua đự án sách này, chắn b ạn gặp m ột vài cố; M ột dấu ngoặc đ ặt sai chỗ đây, thiếu m ột dấu chấm phẩy đó; có lẽ m ột h àm gọi nhầm nơi k hác Và bạn ý ră n g P H P thực r ấ t giỏi việc rõ nhữ ng lỗi Trong trường hợp P H P tạo m ột th ô n g báo lỗi tiếp tục thực th i script; nhữ ng trường hợp khác nghiêm trọng hơn, tạm dừng việc thực th i script bằn g m ột th ô n g báo định số dòng gây lỗi Loại lỗi vừa mô tả lỗi cấp "script"; chúng xảy k h i máy PH P gặp p h ải nhữ ng khiếm khuyết cú pháp cấu trúc PH P Chúng thường n h ậ n th P H P thực b t đầu p h ân tích thực th i m ộ t script Để m inh họa, hăy thử tạo v chạy scrip t sau dây: Đầu sc rip t trông giông h ình 10.1 N hư h ìn h 10.1 m in h họa, script tạo h loại lỗi: m ột "cảnh báo" (w arning) nỗ lực chia cho zero, "lỗi nghiêm trọng" (fata error) nỗ iực gọi r a m ột h àm k hông xác định Thực tế lỗi P H P có th ể p h ân loại rộng th n h b a h n g mục liệt kê tro n g b ản g 10.1 Có m ột p h â n cấp rõ ràn g cho thông báo lỗi PH P: thông báo (notice) ng h iêm trọ n g cảnh báo (vvarning) m lầ n lượt nghiêm trọ n g lỗi nghiêm trọng (fatal error) Theo m ặc định PHP 158 C h n g 10: x lý lỗi hiển th ị cảnh báo lỗi nghiêm trọ n g tro n g đầu r a scrip t (mặc dù bạn th ấ y sau đó, bạn có th ể th ay đổi h n h vi m ặc định n ày cho th ậ m chí th ô n g báo n h ìn th đầu r a script) Các Ỉ5i có th ể xảy tạ i giai đoạn khác tro n g vòng đời m ột sc rip t - lúc khởi động, vào thời gian p h ân tích, vào thời gian biên dịch vào thời gian chạy - dó P H P đưa k hác b iệt nội tạ i giai đoạn khác n h au Nói chung, tổng cộng 12 cấp lỗi kháo n h au (cộng với h cấp "đặc biệt") tượng trưng b ằn g h ằn g có tên M ột d an h sách hoàn chỉnh cáp lỗi n ày có th ể tìm th ấ y tạ i w w w php.neưm anuai/eĩi/' ref.errorfunc,php#errorfunc.constants B ảng 10.2 liệ t kê cấp lỗi m bạn sô thường sử dụng n h ất H ầu h ế t nhừng câp lỗi n ày dễ hiểu Các cấp lỗi m có lẽ b a n gặp trụ c trặc cấp lỗi E_ƯSER đ ặ t sang m ột bên d àn h cho lỗi cấp ứng dụng t'jy ỹ Đừng bận tâ m cá'p lỗi p h ần iđn chúnịỊ có dược thay th ế bdi mô hình ngoại lộ giới thiệu tro n g P H P Waỉtúng Divuionh y u r c inC:^ogram ỉĩl«sUnr0n 8t ĩooấi\Apầche^Ju4o«^h^boak'«cblO*iútíAsi\(««-empr».phponlne m »r 'tỉ uiỉ'JeL/iedfinc&cnSởn[...]... app.phpl28 2l13-Feb -20 08 06 :25 :301include(missingfíle .php) : íaiied to open stream; No suctí file or đirectoryl /ch10/projecf01/app.phpl31 3l13-Feb -20 08 06 :25 :30iinclude(): Failed opening 'm issingíile .php' for inclusion (include_path=' ')l/ch10/project01/app.phpl31 M ột th iế t lặp n h ư vậy làưi cho m ột Iihà quản trị n h à p h á t triể n dỗ duy trì m ột record thư ờng trực của các lỗi script và quay... dựa vào đối tượng, các nhà phát triển đã có thểsữdiỊng nhũng khái niệm OOP về sự tbừa k ế (inheritance) và khả nãng mở rộng (extensibiỉity) đ ể tạo subclass (class con) cho đối tỉiỢng Exception cơ sở và tạo nhĩìng đối tiíợng Exception khác nhau cho những loại ngoại lẽ khác nhan Diềỉi nàv làm cho có thể phân biệt giũa các loại lỗi khác nhau và x ứ lý mọi loại lỗi mộl cách kbác nhau ^ Phtíơng pháp dựa vào... args’ ); return $this->a/$this->b; // coníigure and reađ PHP. Debug íiles in L s e t(‘include_path’ , ', /PHP_ Debug'1.0.0/;’): include ‘ PHP_ Debug-1.0.O /PHP/ Oebug .php ; includft 'PHP^ Debug-I.O.O /PHP/ Debug/Renderer/HTMƯTableConíig .php ; Soptions = array( ’renđer_type’ => 'HTML’, 'render_m ode' => Table’, 'replace_errorhandler’ => false, ); $debug = new PHP_ Debug{$options); set_error_handỉer(‘myHandler’);... thuộc vào k ế t quả của các h o ạ t động file k h ác nhau, m ột ngoại lệ mới được đưa ra bởi script bằng th ủ công Sau đó ngoại lệ n ày được đón b ắ t bởi phương thức xử lý ngoại lệ generic và thông tin d à n h riên g cho lỗi được trích xuất và được h iển th ị cho người dùng Sử dụng các ngoại lệ tù y ý M ột phương p h áp tin h vi hơn là tạo subclass cho đối tượng Exception generic và tạo các đôi tượng. .. ể được tru y cập thông qua các phương thức cài sẵn của đối tượng E xception và chứa m ột thông báo lỗi mô tả, m ột m ã lỗi, tê n file và số dòng gây r a lỗi và m ột backtrace của các lần gọi ra hàm d ẫn đến lỗi B ảng 10.3 liệ t kê những phương thức này Và bản ch ĩn h sửa sau đây của listing trước m inh họa nhữ ng phương thức này đ ang sử dụng: < ?php / / detine array $cỉties = array{ “ United Kingdom"... dùng th ích hợp của lỗi và tạm dùng việc xử lý script Từng ngoại lệ được xử lý hơi khác nhau dể m in h họa mỗi thường trìn h xử lý ngoại lệ có th ể được tùy biến như th ế nào Ví dụ, M ailException được ghi n h ậ t ký san g m ột file với ngày th á n g và th ờ i gian và địa chỉ e-m ail người n h ậ n và InputE xceptions và LogicalExceptions tạo ra các th ô n g báo lỗi khác nhau 1 82 C h ư ớ n g 10: X ử... m ột InputException được tạo ra Và h ìn h 10.7 m inh họa k ế t quả k h i việc chuyển m ail th ấ t bại và một M ailException được tạo ra 10 ... h ãy n h ìn vào báng SQLite B ạn có th ể th th ô n g báo đưa scrip t m inh họa đây: 1l13-Feb -20 08 06 :25 ;30IUndefíned variable: m yVar!/ch10/project01/ app.phpl28 2l13-Feb -20 08 06 :25 :301include(missingfíle .php) :... and reađ PHP. Debug íiles in L s e t(‘include_path’ , ', /PHP_ Debug'1.0.0/;’): include ‘ PHP_ Debug-1.0.O /PHP/ Oebug .php ; includft 'PHP^ Debug-I.O.O /PHP/ Debug/Renderer/HTMƯTableConíig .php ; Soptions... dựa vào đối tượng, nhà phát triển có thểsữdiỊng nhũng khái niệm OOP tbừa k ế (inheritance) khả nãng mở rộng (extensibiỉity) đ ể tạo subclass (class con) cho đối tỉiỢng Exception sở tạo nhĩìng đối

Ngày đăng: 03/12/2015, 20:39

Xem thêm: Kỹ thuật và thủ thuật lập trình hướng đối tượng PHP tập 2 phần 2 nguyễn minh, lương phúc

TỪ KHÓA LIÊN QUAN