Tag: try catch

尝试/最后阻止vs调用dispose?

这两个代码示例之间是否有任何区别,如果没有,为什么using存在? StreamWriter writer; try { writer = new StreamWriter(…) writer.blahblah(); } finally { writer.Dispose(); } VS: using (Streamwriter writer = new Streamwriter(…)) { writer.blahblah } 我的意思是在第二个例子中你真的应该把它放在try块中,所以添加finally块确实不会花费太多精力。 我知道整个事情可能包含在一个更大的尝试块中但是,对我来说似乎是多余的。

创建我自己的exceptionc#

以下是我的C#书中的示例,我遇到了一个在Visual Studio中不起作用的书籍示例。 它涉及创建自己的exception,尤其是阻止你取负数的平方根。 但是当我使用“throw new”创建NegativeNumberException时,我收到一条错误,上面写着“找不到类型或命名空间名称’NegativeNumberException’(您是否缺少using指令或程序集引用?)” 如果这不是正确的方法,我怎么能创建自己的例外? 也许我的书已经过时了? 这是代码: class SquareRootTest { static void Main(string[] args) { bool continueLoop = true; do { try { Console.Write(“Enter a value to calculate the sqrt of: “); double inputValue = Convert.ToDouble(Console.ReadLine()); double result = SquareRoot(inputValue); Console.WriteLine(“The sqrt of {0} is {1:F6)\n”, inputValue, result); continueLoop = false; } catch (FormatException […]

在MVC中使用PartialView进行全局error handling

我在ASP.NET MVC中查看了一篇关于exception处理的完美文章,并希望在本文的方法6中实现一个方法,以便在错误和exception情况下为所有其他模式对话重用相同的错误页面。 另一方面,当我使用弹出窗口时,我需要在modal dialog中渲染PartialView而不是重定向页面。 是否有可能做到这一点? AJAX电话: $.ajax({ type: “POST”, url: ‘@Url.Action(“Delete”, “Person”)’, cache: false, dataType: “json”, data: formdata, success: function (response, textStatus, XMLHttpRequest) { if (response.success) { //display operation result } else { /* At this stage I need to render the Error view as partial without redirecting to Error page on error. The problem […]

Try-Catch不会显示带有等待的消息对话框

以下代码成功从Web服务获取数据并将其显示在Windows 8桌面应用程序中。 HttpClient client = new HttpClient(); HttpResponseMessage response = await client.GetAsync(“http://localhost:12345/api/items”); var info = new List(); if (response.IsSuccessStatusCode) { var content = await response.Content.ReadAsStringAsync(); var item = JsonConvert.DeserializeObject(content); foreach (var data in item) { var infoSect = new SampleDataGroup ( (string)data.Id.ToString(), (string)data.Name, (string)””, (string)data.PhotoUrl, (string)data.Description ); info.Add(infoSect); } } else { MessageDialog dlg = […]

使用try catch返回yield,我该如何解决它

我有一段代码: using (StreamReader stream = new StreamReader(file.OpenRead(), Encoding)) { char[] buffer = new char[chunksize]; while (stream.Peek() >= 0) { int readCount = stream.Read(buffer, 0, chunksize); yield return new string(buffer, 0, readCount); } } 现在我必须使用try-catch块来包围它 try { using (StreamReader stream = new StreamReader(file.OpenRead(), Encoding)) { char[] buffer = new char[chunksize]; while (stream.Peek() >= 0) { int […]

尝试处理exception时命令catch块

try { // throws IOException } catch(Exception e) { } catch(IOException e) { } 当try块抛出IOException ,它将调用第一个catch块而不是第二个。 任何人都可以解释这一点。 为什么它会调用第一个catch块?

在try-catch或代码的特定部分中包装每个方法

我的高级同事告诉我在try-catch块中包装每个方法,以便他们可以跟踪发生exception的位置,以帮助更快地调试问题。 最好将Try Catch中的每个方法包装到这样: Public int foo() { try { //do something }catch(Exeception ex) { //do something with ex } } 或者在我认为可能发生的情况下捕捉exception会更好吗? 例如,对数组执行某些操作可能会导致发生IndexOutOfRangeException 。 //wrap this in try catch int[] array = new int[3]; array[0] = 1; array[1] = 2; array[2] = 3; array[3] = 4; 谢谢。

尝试Catch以外:await Task.Run(()

尝试在外面捕获: await Task.Run(() =>有意义还是只在await中使用它们? private async void Test() { try { await Task.Run(() => { try { DoingSomething(); } catch (Exception ex) { log.Error(ex.Message); } }); } catch (Exception ex) { log.Error(ex.Message); } }

试试看。块块总是很贵?

可能重复: 当没有抛出exception时,try / catch块是否会损害性能? 嘿大家,关于try..catch块的快速问题。 我听说它们使用起来很昂贵,不应该用作程序流程的一部分。 但是,为了validation电子邮件地址,我使用以下代码。 try { MailAddress checkEmail = new MailAddress(testEmail); return true; } catch { return false; } 由于事先validation,我没有很多例外被捕获,除非它试图绕过validation。 我的问题是,尝试…如果捕获到exception,Catch块只是昂贵的,或者无论是否抛出任何exception,它总是很昂贵? 谢谢 编辑 :感谢所有的回复。 我已经决定,因为检查(在C#中)不是很贵,我会坚持使用这种方法。 这主要是因为抛出的实际exception是罕见的,因为先前的validation步骤确保没有人意外地输入无效的电子邮件地址。

实现死锁exception的重试逻辑

我已经实现了一个通用存储库,并想知道是否有一种智能方法可以在出现死锁exception的情况下实现重试逻辑? 对于所有存储库方法,该方法应该相同。 那么无论如何我可以避免在每一种方法中使用retry-count再次编写’try / catch – call方法’吗? 任何建议都是受欢迎的。 我的存储库代码: public class GenericRepository : IRepository { private ObjectContext _context; public List ExecuteStoreQuery(string commandText, params object[] parameters) where TEntity : class { List myList = new List(); var groupData = _context.ExecuteStoreQuery(commandText, parameters); return myList; } public IQueryable GetQuery() where TEntity : class { var entityName = GetEntityName(); […]