Tôi có đoạn mã sau:Việc ném một ngoại lệ trong một phương thức có khiến phương thức trả về không?
public static Point operator /(Point point, double value)
{
if (value == 0)
{
throw new DivideByZeroException("Cannot divide by zero");
return Point.Origin;
}
return new Point(point.X/value, point.Y/value, point.Z/value);
}
Và câu lệnh return đầu tiên (return Point.Origin;
) được gạch chân màu xanh lá cây trong Visual Studio. Thông báo cho biết "Mã không thể truy cập được phát hiện" khi con trỏ được di chuột qua văn bản được gạch dưới. Điều này dẫn tôi đến câu hỏi của tôi được nêu trong dòng tiêu đề:
Việc ném ngoại lệ trong một phương thức có khiến phương thức trả lại không?
Cảm ơn, tôi hiểu Bây giờ: Việc ném một ngoại lệ trong một phương thức làm cho luồng thực thi của chương trình đi tới một trình xử lý ngoại lệ thích hợp trong phương thức, (chẳng hạn như câu lệnh bắt hoặc cuối cùng) nếu có, hoặc thoát khỏi phương thức và đi lên ngăn xếp cuộc gọi cho đến khi nó được xử lý. Trong mọi trường hợp, mã khác trong phương thức sau khi 'ném ngoại lệ mới' và bên ngoài bất kỳ khối catch/finally nào sẽ không bao giờ được thực thi. Và để làm rõ và trả lời câu hỏi, phương thức không trả về một giá trị, nhưng nó "trả về" theo nghĩa là thực thi chương trình trả về phương thức gọi. –