Cách bắt các lỗi nước ngoài lệ Exception tạo nên trong xây dựng C# với cấu lệnh try catch finally, bí quyết tạo với phát sinh các ngoại lệ


Ngoại lệ Exception

Ngoại lệ (exception) là sự việc - lỗi tạo ra trong quy trình thực thi chương trình. Thường khi chương trình đang hoạt động mà tạo ra ngoại lệ (lỗi) thì dẫn cho chương trình dứt ngay lập tức. Gồm vô số nguyên nhân để chương trình đang chạy mà phát sinh ngoại lệ, ví dụ:

Dữ liệu người tiêu dùng nhập sai, mà chương trình không điều hành và kiểm soát được tiến hành các phép toán không được phép (như chia một số cho 0) thao tác làm việc với tài nguyên không tồn tại (như mở file không tồn tại trên đĩa, liên kết đến csdl không trường thọ ...) Thiếu bộ nhớ lưu trữ ...

Trong C# khi có một lỗi vạc sinh phần lớn các lỗi đều có thể quản lý bởi tủ sách C# thì nó vẫn phát hình thành một đối tượng người dùng lớp Exeption (System.System) hoặc đối tượng người dùng lớp nào đó thừa kế từ Exception

Khi một đối tượng người sử dụng lớp Exception hiện ra - mà lịch trình không chủ động xử lý đối tượng người sử dụng này thì chương trình sẽ kết thúc. Đối tượng lớp Exception chứa trong nó những thông tin về lỗi (dòng thông báo, nguyên nhân lỗi, địa điểm phát sinh lỗi ...)


Thử tạo nên một Exception

Chạy đoạn code sau:

static void Main(string<> args) int<> mynumbers = new int<> 1,2,3; int i = mynumbers<10>; // nơi này phát sinh lỗi Đoạn code trên khi chạy sẽ phát sinh lỗi vì vì, mynumbers là mảng gồm 3 phần tử, nhưng chi đọc lại cố gắng tình truy cập đến thành phần thứ 11 mynumber<10>

*

Do lỗi này không được xử lý, cần chương trình hoàn thành ngay mau chóng và bao gồm đọc được thông báo về lỗi như hình trên.

Bạn đang xem: Tìm hiểu và sử dụng ngoại lệ exception câu lệnh try catch trong c# c sharp

Xử lý ngoại lệ - Exception

Nếu ngoại lệ (lỗi thực thi) phân phát sinh mà không giải pháp xử lý thì lịch trình sẽ dừng bất thần - nếu như muốn xử lý ngoại lệ thì ta nên bắt lấy nó và điều hướng chương trình một bí quyết thích hợp. Để bắt nước ngoài lệ ta thực hiện câu lệnh try ... Catch ... Như sau:

try // những khối code được thống kê giám sát để bắt lỗi nếu có // nếu có lỗi sẽ phát sinh nước ngoài lệ Exception // nước ngoài lệ này bắt lại được làm việc khối catchcatch (Exception loi) // Khối này triển khai khi gồm lỗi - đối tượng người tiêu dùng Exception bắt được lưu giữ ở đổi thay loi vì vậy đoạn code nào muốn đo lường để bắt nước ngoài lệ - thì chuyển vào khối try, nếu như ngoại lệ xẩy ra do code trong khối kia thì sẽ bắt được - công tác sẽ không ngừng mà lập tức chuyển quý phái khối catch, tại đó các bạn có ngay đối tượng người tiêu dùng lớp Exception - bạn phải xử lý theo ngắn gọn xúc tích ứng dụng của doanh nghiệp điều hướng công tác một cách tương thích ở đây.

Đối tượng lớp Exception có một trong những thuộc tính, tiện thể dụng cho mình gỡ rối kia là:

Message chuỗi đựng nội dung thông tin lỗi StackTrace chuỗi chứa các bước thực thi chương trình cho đến khi bị lỗi (có chứa những phương thức, hàm khi xúc tiến gây lỗi, địa điểm file lỗi ...) Source chứa tên ứng dụng hoặc đối tượng người sử dụng bị lỗi

Thực hành bắt lỗi:

static void Main(string<> args) try // khối này được tính toán để bắt lỗi - lúc nó phát sinh int<> mynumbers = new int<> 1,2,3; int i = mynumbers<10>; // cái này tạo nên lỗi Console.WriteLine(i); // dòng này sẽ không được triển khai vì lỗi trên catch (Exception loi) // khối này tiến hành khi bắt được lỗi Console.WriteLine("Có lỗi rồi"); Console.WriteLine(loi.Message); Có lỗi rồiIndex was outside the bounds of the array.

Bắt các ngoại lệ

trong .NET từ bỏ lớp các đại lý Exception nó tạo nên không hề ít loại ngoại lệ khác phục vụ cụ thể cho từng loại lỗi phân phát sinh không giống nhau như: FileNotFoundException, FormatException, OutOfMemoryException, ArgumentException, NullReferenceException, IndexOutOfRangeException, DivideByZeroException...

Để bắt ví dụ một loại ngoại lệ nào đó chỉ vấn đề thêm một khối catch tương xứng với nước ngoài lệ đó.

try int x = 10; int y = 0; int z = x / y;catch (DivideByZeroException e1) Console.WriteLine(e1.Message);catch (Exception e2) Console.WriteLine(e2.Message); Khi gồm ngoại lệ chia một trong những cho 0, thì khối catch với ngoại lệ hình trạng DivideByZeroException được thi hành, còn nước ngoài lệ khác sẽ bởi vì khối catch thứ 2 thi hành. Bằng phương pháp như vậy bạn có thể khai báo các khối catch tùy nhu cầu.

Xem thêm: Phần Mềm Đo Nhiệt Độ Ngoài Trời, Nhiệt Kế Đơn Giản

Thêm vào khối finally

Trong lệnh try ... Catch, bạn có thể thêm một tùy lựa chọn là khối finally, code vào khối này được thực thi ngay cả khi gồm phát sinh ngoại lệ tuyệt không. Khối này cơ bạn dạng để giải phóng những tài nguyên chỉ chiếm giữ.

int x = 10;int y = 0;int z = 0;try z = x / y;catch (DivideByZeroException e1) Console.WriteLine(e1.Message);finally // luôn được thi hành mặc dù có phát sinh ngoại lệ hay là không Console.WriteLine(z);

Phát sinh ngoại lệ với throw

giả dụ code của bạn có nhu cầu phát sinh ngoại lệ cho biết thêm có một lỗi nào kia vừa xẩy ra thì bạn cần tạo ra một đối tượng lớp Exception hoặc đối tượng người sử dụng thuộc lớp nào đó kế thừa từ Exception, tiếp nối phát sinh bằng lệnh throw

Ví dụ, tạo ra hàm Thuong trường hợp tham số thứ hai bằng ko thì tạo nên ngoại lệ.

public static double Thuong(double x, double y) if (y == 0) // Khởi chế tạo ngoại lệ, thông số là thông báo lỗi Exception myexception = new Exception("Số phân chia không được bằng 0"); // gây ra ngoại lệ, code phía sau throw không được tiến hành throw myexception; return x / y;static void Main(string<> args) double z = Thuong(100,0); khi chạy, nước ngoài lệ vẫn phát sinh, cùng ngoại lệ đó là myexception, chứa thông tin lỗi do bạn thiết lập. Vày chương trình ko bắt ngoại lệ này, nên nó dừng ngay lập tức

*

Giờ ao ước bắt bao gồm ngoại lệ do bạn phát sinh

static void Main(string<> args) try double z = Thuong(100,0); catch (Exception e) Console.WriteLine(e.Message); } Chạy, đã in ra dòng: "Số chia không được bằng 0"

Tạo Exeption riêng

Nếu muốn tạo ra các lớp nhằm quẳng ra các lỗi khi nên thiết, thì chỉ việc thừa kế lớp Exception. ích lợi việc tạo ra lớp riêng, nó giúp cho việc thống trị lỗi - gỡ rối tốt hơn.

Ví dụ, người dùng đưa vào một dữ liệu chuỗi string, chuỗi này phải tất cả độ dài dưới 10 ký kết tự, nếu dài thêm hơn thì phát sinh Exception riêng, bạn sẽ xây dựng một lớp kế thừa từ Exception chuyên dành riêng cho lỗi này

Tạo thử một lớp viết tên là DataTooLongExeption như sau:

using System;namespace CS015_Error_Exception public class DataTooLongExeption : Exception const string erroMessage = "Dữ liệu vượt dài"; public DataTooLongExeption() : base(erroMessage) sử dụng nó để phát sinh ngoại lệ

using System;namespace CS15_Error class Program public static void UserInput(string s) if (s.Length > 10) Exception e = new DataTooLongExeption(); throw e; // lỗi văng ra //Other code - no exeption static void Main(string<> args)a try UserInput("Đây là 1 chuỗi hết sức dài ..."); catch (DataTooLongExeption e) Console.WriteLine(e.Message); catch (Exception otherExeption) Console.WriteLine(otherExeption.Message); Khi chạy, nước ngoài lệ vạc sinh và bắt lại được - nó in ra thông tin của nước ngoài lệ - dữ liệu quá dài

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *