Tag: exception处理

在异步方法中捕获exception

我试图更熟悉异步/等待编程和exception处理。 static void Main(string[] args) { TestAsyncException(); } private static async void TestAsyncException() { try { var result = await Task.Factory.StartNew(() => DoSomething()); //do something with the result } catch (Exception e) { Console.WriteLine(e.Message); } } private static int DoSomething() { throw new Exception(“Exception was thrown!”); } 我期待优雅地处理Exception ,但代码执行停止,我得到 在..中发生了’System.Exception’类型的exception,但未在用户代码中处理。 但是当我继续执行代码时, Exception实际上被捕获(并且消息显示给Console )。 如何在不破坏代码执行的Exception下捕获Exception ?

下载大文件,保存在数据库中

我们有很多文件,在SQL Server数据库中保存为二进制文件。 我已经将用于传递这些文件的.ashx文件发送给用户。 不幸的是,当文件变得相当大时,它将失败,并出现以下错误: 算术运算中溢出或下溢 我假设它耗尽了内存,因为我将二进制文件加载到byte []中。 所以,我的问题是,当它来自数据库表时,我怎样才能创建这个function,读取块(也许?)? 似乎Response.TransmitFile()似乎是一个不错的选择,但同样,如何使用数据库? DB.GetReposFile()在下面的代码中从数据库中获取文件。 条目有各种字段:Filename,ContentType,datestamps和FileContent as varbinary。 这是我的function,提供文件: context.Response.Clear(); try { if (!String.IsNullOrEmpty(context.Request.QueryString[“id”])) { int id = Int32.Parse(context.Request.QueryString[“id”]); DataTable dtbl = DB.GetReposFile(id); string FileName = dtbl.Rows[0][“FileName”].ToString(); string Extension = FileName.Substring(FileName.LastIndexOf(‘.’)).ToLower(); context.Response.ContentType = ReturnExtension(Extension); context.Response.AddHeader(“Content-Disposition”, “attachment; filename=” + FileName); byte[] buffer = (byte[])dtbl.Rows[0][“FileContent”]; context.Response.OutputStream.Write(buffer, 0, buffer.Length); } else { context.Response.ContentType […]

.NET Remotingexception未处理客户端

我检查了其余的远程问题,这个具体案例似乎没有得到解决。 我有一个.NET Remoting服务器/客户端设置。 在服务器端,我有一个对象,它有一个可以抛出exception的方法,以及一个尝试调用该方法的客户端。 服务器: public bool MyEquals(Guid myGuid, string a, string b) { if (CheckAuthentication(myGuid)) { logger.Debug(“Request for \”” + a + “\”.Equals(\”” + b + “\”)”); return a.Equals(b); } else { throw new AuthenticationException(UserRegistryService.USER_NOT_REGISTERED_EXCEPTION_TEXT); } } 客户: try { bool result = RemotedObject.MyEquals(myGuid, “cat”, “dog”); } catch (Services.Exceptions.AuthenticationException e) { Console.WriteLine(“You do not […]

使用C#中的exception。 它会影响性能吗?

基本上,问题是:C#中的exception是否会影响性能? 避免例外重新抛出是否更好? 如果我在我的代码中生成exception,它是否会影响性能? 对不起问题本身的sillines

绑定时已释放ObjectContext实例

这是我的代码: public class JobsRepository:BaseNewsletterRepository { public IEnumerable GetJobs() { var jobs = Newsletterctx.Jobs.Include(“Info”).OrderBy(o => o.JobID); return jobs.AsEnumerable(); } } public class BusinessNewsletter { public static IEnumerable GetJobs() { using (JobsRepository jobsRepository = new JobsRepository()) { return jobsRepository.GetJobs(); } } } rptJobs.DataSource = BusinessNewsletter.GetJobs(); rptJobs.DataBind(); 当我尝试绑定时,我得到错误: ObjectContext实例已被释放,不能再用于需要连接的操作。 是唯一的解决方案,在BusinessNewsletter类中转换和返回List吗? public static IList GetJobs() { IList job; using […]

为什么Dispatcher.BeginInvoke为ThreadStart解包TargetInvocationException而不为Action解包?

考虑以下两个应用程序: 1: public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); this.Dispatcher.UnhandledException += Dispatcher_UnhandledException; } void Dispatcher_UnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) { System.Diagnostics.Debug.WriteLine(e.Exception.GetType()); } private void Button_Click(object sender, RoutedEventArgs e) { this.Dispatcher.BeginInvoke((ThreadStart)delegate { throw new AccessViolationException(“test”); }, DispatcherPriority.Input); } } 2: public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); this.Dispatcher.UnhandledException += […]

EntityState.Deleted不起作用,Remove(entity)呢?

我在尝试读取记录时一直在与EF斗争,然后在同一个事务中删除这些记录。 我最初使用的是EntityState.Deleted方法,它会产生错误: 操作失败:无法更改关系,因为一个或多个外键属性不可为空。 当对关系进行更改时,相关的外键属性将设置为空值。 如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。 但是如果我把它改成我下面的那个,使用.Remove(),那么一切都很好。 有什么区别和最佳使用时间.Remove()vs .Deleted? 我怎么能使用.Deleted方法来完成这项工作? 我已经尝试创建一个新的上下文实例到我的存储库读取和另一个删除,但后来得到的错误与IEntityTracker无法跟踪多个实例…我也试过.Include在初始读取时加载依赖记录进入EF所以它知道并删除它们。 我也尝试过。先读取读取记录。 一切都无济于事。 这是有问题的方法。 请注意,我确实有一个使用.Deleted方法的通用存储库,该方法在此方案之前一直很好用(读取然后删除相同的记录。) //Delete Allocation Need and AllocatedContainers for alloc need id public ActionConfirmation DeleteAllocRecords(int intFacilityId, AllocNeedSourceTypes needSourceType, int intNeedSourceId) { var context = new InventoryMgmtContext(); var repository = new AllocationNeedRepository(context); //Delete Allocation Need and hence children in Allocated Containers var srcType = needSourceType.ToString(); […]

事件的exception处理

如果这是一个简单的问题,我很抱歉(我的谷歌今天可能很糟糕)。 想象一下这个WinForms应用程序有这种类型的设计:主应用程序 – >显示一个对话框 – >第一个对话框可以显示另一个对话框。 两个对话框都有OK / Cancel按钮(数据输入)。 我试图找出某种类型的全局exception处理,沿着Application.ThreadException行。 我的意思是: 每个对话框都有一些事件处理程序。 第二个对话框可能包含: private void ComboBox_SelectedIndexChanged(object sender, EventArgs e) { try { AllSelectedIndexChangedCodeInThisFunction(); } catch(Exception ex) { btnOK.enabled = false; // Bad things, let’s not let them save // log stuff, and other good things } } 实际上,应该以这种方式处理此对话框中的所有事件处理程序。 这是一个例外情况,所以我只想记录所有相关信息,显示消息,并禁用该对话框的okay按钮。 但是,我想避免在每个事件处理程序中使用try / catch(如果可以的话)。 所有这些try / catch的缺点是: […]

MonoTouch:uncaughtExceptionHandler?

在MonoTouch中,如何注册未捕获的exception处理程序(或类似函数) 在Obj-C中: void uncaughtExceptionHandler(NSException *exception) { [FlurryAnalytics logError:@”Uncaught” message:@”Crash!” exception:exception]; } – (void)applicationDidFinishLaunching:(UIApplication *)application { NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler); [FlurryAnalytics startSession:@” “]; …. }

WCF Web服务调用 – 要捕获的exception?

我有一个调用外部Web服务的程序,我想向用户提供一个友好的对话框,例如服务器关闭,有人切断电缆等。假设以下代码 try { client.MyWebService() } catch(? ex) { // display friendly dialog explaining what went wrong } 我应该在代码中用什么例外代替问号? 当一切工作顺利并且我无法控制外部部件时,很难真正测试这样的情况,因此有些见解会受到赞赏。 谢谢!