2009-05-21 10 views
5

Tôi muốn nhà thiết kế bắt lỗi khi tôi đang gỡ lỗi và tôi muốn người dùng thấy thông báo thân thiện của tôi nếu xảy ra lỗi. Tôi biết tôi có thể thực hiện điều này với những điều sau đây:Có cách nào tốt hơn để có được studio trực quan để bỏ qua try/catch trong chế độ gỡ lỗi

#If Debug=False Then 

Try 

#End If 

'some code here 

#If Debug=False Then 

Catch ex as exception 

    Messagebox.Show("Errors suck") 

End Try 

#End If 

Tôi không muốn phải viết tất cả các câu lệnh và làm cho chúng lộn xộn mã của tôi. Có vẻ như đây là một nhu cầu chung và phải có cách tốt hơn. Có ai biết một cách tốt hơn?

+0

Bạn đã bao giờ giải quyết vấn đề này thành công chưa? Bạn vẫn cần trợ giúp với điều này? – jcolebrand

Trả lời

0

Trong phần bắt của Try..Catch bạn nên viết thông điệp ngoại lệ, stacktrace, và bất cứ điều gì khác bạn có thể muốn một tệp nhật ký - ngoài ra bạn có thể ghi dữ liệu đó vào Nhật ký sự kiện Windows.

Tệ nhất, bạn chỉ có thể đặt điểm ngắt trong phần Catch của khối Try..Catch, vì bạn không nên thường xuyên nhấn vào nó nên không phải là một vấn đề lớn khi thiết lập.

15

Trong VS.NET, bạn có thể nói bạn có muốn trình gỡ lỗi phá vỡ khi ngoại lệ là ném (không chỉ khi nó không được giải quyết).

Nhìn vào Debug | Ngoại lệ ... mục menu (Ctl-Alt-E trên phím tắt của tôi). Chọn excepption bạn quan tâm, sau đó đánh dấu vào ô "ném" cho ngoại lệ đó.

Bạn có thể đánh dấu rằng hộp ở nhiều cấp độ (tất cả các trường hợp ngoại lệ CLR, tất cả các trường hợp ngoại lệ CLR trong một không gian tên nào đó, hoặc trường hợp ngoại lệ rất cụ thể)

3

Không có cách nào tốt để làm cho nó bỏ qua một catch khác so với những gì bạn đã làm. Nhưng bạn có thể làm cho mã một chút sạch hơn và về cơ bản có được tác dụng tương tự. Về cơ bản, bạn đang cố ngăn chặn hành động trong khối catch đang chạy. Cách tốt hơn để làm điều đó là một phương pháp được biên dịch có điều kiện.

Try 
... 
Catch ex As Exception 
    DebugLog(ex) 
    Throw 
End Try 

<Condition("DEBUG)> _ 
Public Sub DebugLog(ByVal ex As Exception) 
    Messagebox.Show("errors suck") 
End Sub 
0

Tôi nhận thấy bạn chưa bao giờ đánh dấu bất kỳ điều gì được chấp nhận tại đây. Bạn đã từng nghe về Lập trình hướng Aspect chưa? Điều này thực sự tương tự như một cái gì đó tôi đang tìm kiếm để thực hiện trong một dự án mới, vì vậy tôi đã tò mò nếu bạn đã làm bất cứ điều gì khác với điều này. Thêm vào đó là một câu hỏi cũ năm ... bạn có thể đã làm điều gì đó và không theo dõi được.

Và sau đó nó Dawns về với tôi rằng nó trông giống như hỏi đã đóng tài khoản của mình ...

0

Sau đây là cách tôi làm điều đó:

Enabled:

Try ' : Catch: End Try 
    doSomething 
    andSomeMore 
    etcEtc 
' Try 
Catch ex As Exception 
    handleException 
End Try 

Vô hiệu hóa trên bằng cách xóa hai ký tự nhận xét:

Try : Catch : End Try 
    doSomething 
    andSomeMore 
    etcEtc 
Try 
Catch ex As Exception 
    handleException 
End Try