Xử lý ngoại lệ (Exception Handling) trong C++

Một Exception (ngoại lệ) là một vấn đề xuất hiện trong khi thực thi một chương trình. Một Exception trong C++ là một phản hồi về một tình huống ngoại lệ mà xuất hiện trong khi một chương trình đang chạy, ví dụ như chia cho số 0.

Một Exception (ngoại lệ) là một vấn đề xuất hiện trong khi thực thi một chương trình nhanh nhất. Một Exception trong C++ là một phản hồi về một tình huống ngoại lệ full crack mà xuất hiện trong khi một chương trình đang chạy nguyên nhân, ví dụ như chia cho số 0.

Exception cung cấp một cách nạp tiền để truyền điều khiển từ một phần đăng ký vay của một chương trình tới phần khác kiểm tra. Exception Handling (Xử lý ngoại lệ) trong C++ lấy liền được xây dựng dựa trên 3 từ khóa là: try danh sách, catch tốt nhất, phải làm sao và throw.

  • throw: Một chương trình ném một Exception khi một vấn đề xuất hiện

    an toàn

    . Việc này ở đâu nhanh được thực hiện nguyên do bởi sử dụng từ khóa throw trong C++.

  • catch: Một chương trình bắt một Exception không tính tiền với một Exception Handler tại vị trí trong một chương trình nơi bạn muốn xử lý vấn đề đótrên điện thoại thông minh. Từ khóa catch trong C++ chỉ dẫn việc bắt một exception.
  • try: Một khối try kích hoạt có thể vận tốc được bắt vô hiệu bởi một số lượng cụ thể exceptionở đâu tốt. Nó như thế nào được theo sau hướng dẫn bởi một qua web hoặc nhiều khối catch.

Giả sử một khối sửa lỗi sẽ tạo một Exeption tăng cường, một phương pháp bắt một exception hay nhất bởi sử dụng tích hợp san sẻ những từ khóa try qua web và catch san sẻ. Một khối try / catch sử dụng được đặt xung quanh code bản quyền mà qua app hoàn toàn có thể tạo một exception qua mạng. Code bên trong một khối try / catch ứng dụng được xem như thể code thanh toán giao dịch được bảo vệ ở đâu uy tín, xóa thông tin tài khoản và cú pháp ở đâu tốt để sử dụng try / catch trong C + + tốt nhất như sau :

try{  / / phan code duoc bao ve}catch(ten_Exception e1){  / / day la khoi catch}catch(ten_Exception e2){  / / day la khoi catch}catch(ten_Exception eN){  / / day la khoi catch}

Bạn đăng ký vay có thể liệt kê nhiều lệnh catch nhanh nhất để bắt nguyên nhân các kiểu exception khác nhau trong trường hợp khối try nhanh nhất của bạn xuất hiện nhiều hơn một exception trong tổng hợp các tình huống khác nhau.

Ném Exception trong C++

Exception mẹo vặt hoàn toàn có thể bị ném ở ứng dụng bất kỳ đâu bên trong một khối code quảng cáo bởi sử dụng trá hình những lệnh throw trong C + + lừa đảo. Toán hạng kiểm tra của lệnh throw quyết định hành động kiểu cho exception trá hình và mẹo vặt hoàn toàn có thể là bất kể biểu thức nào tất toán và kiểu tác dụng xóa thông tin tài khoản của biểu thức quyết định hành động kiểu tính năng của exception bị ném .Ví dụ sau minh họa việc ném một exception khi chia cho số 0 trong C + + :

doublephepchia(inta, intb){  if(b= = 0 )  {   throw " Chu y : Ban dang chi cho so 0 ! ! ! ";  }  return (a/b) ;}

Bắt Exception trong C++

Khối catch theo sau khối try trong C++ qua mạng sẽ bắt bất kỳ exception nào công cụ. Bạn thanh toán có thể xác định kiểu công cụ của exception bạn muốn bắt tổng hợp và điều này nạp tiền được xác định tất toán bởi khai báo exception tài khoản mà xuất hiện trong ở đâu nhanh các dấu ngoặc đơn theo sau từ khóa catch trong C++.

try{  / / phan code duoc bao ve}catch(ten_Exception e){ / / phan code de xu ly ngoai le co ten la ten_Exception}

Code trên giảm giá sẽ bắt một exception có kiểu là ten_Exception tính năng. địa chỉ Nếu bạn muốn xác định rằng một khối catch nến xử lý bất kỳ kiểu exception nào bị ném trong một khối try giả mạo, bạn phải đặt một dấu ba chấm (…) trong tính năng các dấu ngoặc đơn theo sau từ khóa catch cài đặt, kiểm tra như sau:

try{  / / phan code duoc bao ve}catch( ... ){ / / phan code de xu ly bat ky kieu ngoai le nao}

Ví dụ sau ném một exception khi chia cho số 0 giá rẻ và tất cả chúng ta bắt nó trong khối catch .

# include 

using namespacestd;doublephepchia(inta, intb){ if(b= = 0 ) { throw " Chu y : Ban dang chi cho so 0 ! ! ! "; } return (a/b) ;}intmain( ){ intx= 15; inty= 0; doublez= 0; try {z=phepchia(x,y) ;

cout

<

Bởi vì chúng ta đang tạo một exception có kiểu const char* tốt nhất, vì thế trong khi bắt exception này qua web, chúng ta phải sử dụng const char* trong khối catch hỗ trợ. Biên dịch hỗ trợ và chạy chương trình C++ trên mẹo vặt sẽ cho kết quả sau:

Chuy: Bandang chi cho so0! ! !

Standard Exception trong C++

C++ cung cấp một danh sách địa chỉ các Standard Exception kích hoạt được định nghĩa trong thanh toán mà chúng ta tự động có thể sử dụng trong tính năng các chương trình mật khẩu. nơi nào Những exception này tài khoản được sắp xếp theo cấu trúc thứ tự cha-con chia sẻ như sau:

Xử lý ngoại lệ (Exception Handling) trong C++

Bảng dưới là miêu tả ngắn gọn về mỗi exception phải làm sao được đề cập trong sơ đồ trên:

Exception Miêu tả
std::exception Một exception lừa đảo và lớp cha quản trị của không tính tiền tất cả Standard Exception trong C++
std::bad_alloc Có thể chi tiết cụ thể được ném nơi nào bởi new
std::bad_cast Có thể tính năng được ném vô hiệu bởi dynamic_cast
std::bad_exception Đây là thiết bị hữu ích giao dịch thanh toán để xử lý Unexpected Exception trong một chương trình C++
std::bad_typeid Có thể link down được ném kinh nghiệm tay nghề bởi typeid
std::logic_error Một exception qua app mà theo lý thuyết thanh toán giao dịch có thể tất toán được phát hiện tối ưu bởi việc đọc code
std::domain_error Đây là một exception ở đâu tốt được ném khi một miền toán học không hợp lệ tự động hóa được sử dụng
std::invalid_argument Được ném do giả mạo các tham số không hợp lệ
std::length_error Được ném khi một std::string qua web quá lớn bảo đảm an toàn được tạo ra
std::out_of_range Có thể kích hoạt được ném nơi nào bởi một phương thứcdịch vụ, ví dụ std::vector sửa lỗi và std::bitset<>::operator[]().
std::runtime_error Một exception qua app mà theo lý thuyết không thể giao dịch thanh toán được phát hiện tốt nhất bởi việc đọc code
std::overflow_error Được ném dịch vụ nếu một sự tràn luồng toán học (mathematical overflow) xuất hiện
std::range_error Xuất hiện khi bạn cố gắng lưu giữ một giá trị bên ngoài dãy giá trị
std::underflow_error Được ném qua web nếu một mathematical underflow (sự tràn dưới) xuất hiện

Định nghĩa Exception mới trong C++

Bạn ứng dụng có thể định nghĩa phải làm sao các exception cho kích hoạt riêng bạn bằng việc kế thừa nguyên nhân và ghi đè tính năng lớp exception trong C++ cài đặt. Ví dụ sau minh họa cách bạn danh sách có thể sử dụng lớp std::exception tài khoản để triển khai exception download của kích hoạt riêng bạn theo một cách chuẩn trong C++:

# include 

# include

using namespacestd;struct MyException : publicexception{ const char *what( ) const throw ( ) { return " Exception trong C + + "; }} ; intmain( ){ try { throw MyException( ) ; } catch(MyExceptionvàe) {std::cout< < " MyException da duoc bat ! " <

Nó không lấy phí sẽ cho tác dụng sau :

MyExceptionda duoc bat!Exceptiontrong C+ +

Ở đây tăng cường, what ( ) là một phương pháp public lấy liền được cung ứng vô hiệu bởi lớp exception trong C + + quản trị và nó sử dụng đã tất toán được ghi đè tất toán bởi bản quyền tổng thể nơi nào những lớp exception con giá rẻ. Ví dụ này trả về nguyên do chi tiết cụ thể của một exception trong C + + .

Theo Tutorialspoint

Bài trước : Đọc / ghi File trong C + + | fstream trong c + +Bài tiếp : Bộ nhớ động trong C / C + +

4.9/5 (41 votes)