我正在编写一个关于C#的程序,我刚刚开始使用Exception。我之前已经完成了Java,但我试图不惜一切代价避免异常。我现在明白,我不能再避免它了。所以我需要一些建议。我有这样的代码:
try
{
//...
}
catch
{
//...
}
//...
try
{
//...
}
catch
{
//...
}
这是一个GUI程序。我想这样做,以便在捕获异常时,程序基本上会停止所有操作,但不会关闭程序,因此GUI仍然存在,用户可以对发现的问题进行更改。
顺便说一句:我们的讲师将因多次退货而失败,因此建议不会发生答案 0 :(得分:2)
您可以定义处理程序以捕获所有未处理的异常。确切的机制取决于您使用的UI框架。
对于WinForms,您可以执行类似
的操作AppDomain.CurrentDomain.UnhandledException += new
UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
// Windows forms exceptions handler
Application.ThreadException += new
ThreadExceptionEventHandler(Application_ThreadException);
http://kenneththorman.blogspot.com/2010/10/windows-forms-net-handling-unhandled.html
对于WPF,您可以执行类似
的操作<Application x:Class="UnhandledExceptionHandler.App"
DispatcherUnhandledException="Application_DispatcherUnhandledException">
</Application>
private void Application_DispatcherUnhandledException(object sender,
System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
// Handle the exception
}
http://www.codeproject.com/Articles/90866/Unhandled-Exception-Handler-For-WPF-Applications
答案 1 :(得分:0)
以防Eric J。的答案过于复杂:
我认为,因为你的教授只允许一个return语句,你将拥有一些服务,它会做一些工作,并通知调用者状态和可能的错误消息。
如果您可以使用布尔消息,那么以下内容应该适用于您:
public class Service
{
public bool DoWork()
{
bool success = false;
try
{
//code to do work
success = true;
}
catch(Exception ex)
{
//do something with the ex
success = false;
}
return success;
}
}