Questions tagged «exception-handling»

异常是一种异常情况,需要偏离程序的正常流程。通常,异常不应导致完全失败,而应由异常处理程序来处理。异常处理是许多编程语言中的内置构造。通常,通过展开堆栈来处理异常,从而回滚到异常范围之外的已定义状态,然后调用处理程序块或例程。

10
“ throw”和“ throw ex”之间有区别吗?
有些帖子问这两者之间已经有什么区别。(为什么我什至不得不提这个...) 但是我的问题有所不同,在另一种类似于神的错误处理方法中,我称呼为“ throw ex” 。 public class Program { public static void Main(string[] args) { try { // something } catch (Exception ex) { HandleException(ex); } } private static void HandleException(Exception ex) { if (ex is ThreadAbortException) { // ignore then, return; } if (ex is ArgumentOutOfRangeException) { // Log …

11
获取引起异常的异常描述和堆栈跟踪,全部作为字符串
我看过很多关于Python中堆栈跟踪和异常的文章。但是还没有找到我所需要的。 我有一段Python 2.7代码可能会引发异常。我想捕获它并将其完整描述和导致错误的堆栈跟踪分配给字符串(只是我们在控制台上看到的所有内容)。我需要此字符串以将其打印到GUI中的文本框中。 像这样: try: method_that_can_raise_an_exception(params) except Exception as e: print_to_textbox(complete_exception_description(e)) 问题是:函数是什么complete_exception_description?


19
从App.config获取连接字符串
var connection = ConnectionFactory.GetConnection( ConfigurationManager.ConnectionStrings["Test"] .ConnectionString, DataBaseProvider); 这是我的App.config: <?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="Test" connectionString="Data Source=.;Initial Catalog=OmidPayamak;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> </configuration> 但是当我的项目运行时,这是我的错误: 你调用的对象是空的。

8
`throw new Error`和`throw someObject`有什么区别?
我想编写一个通用的错误处理程序,它将捕获在任何代码实例上故意抛出的自定义错误。 当我throw new Error('sample')喜欢以下代码时 try { throw new Error({'hehe':'haha'}); // throw new Error('hehe'); } catch(e) { alert(e); console.log(e); } 日志在Firefox中显示为,Error: [object Object]而我无法解析该对象。 对于第二个throw日志,显示为:Error: hehe 我什么时候做 try { throw ({'hehe':'haha'}); } catch(e) { alert(e); console.log(e); } 控制台显示为:Object { hehe="haha"}在其中可以访问错误属性。 有什么区别? 代码中有区别吗?像字符串一样,只是作为字符串传递,而像对象一样传递,但是语法会有所不同吗? 我没有探索过抛出错误对象……我只做过抛出字符串。 除上述两种方法外,还有其他方法吗?

5
如何在R中编写trycatch
我想编写trycatch代码来处理从网络下载时出现的错误。 url <- c( "http://stat.ethz.ch/R-manual/R-devel/library/base/html/connections.html", "http://en.wikipedia.org/wiki/Xz") y <- mapply(readLines, con=url) 这两个语句成功运行。在下面,我创建了一个不存在的网址: url <- c("xxxxx", "http://en.wikipedia.org/wiki/Xz") url[1]不存在。一个人如何编写一个trycatch循环(函数),以便: 如果URL错误,输出将为:“ Web URL错误,无法获取”。 如果URL错误,代码不会停止,而是继续下载直到URL列表的末尾?



13
您是否(确实)编写了异常安全代码?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 异常处理(EH)似乎是当前的标准,并且通过搜索Web,我找不到任何尝试改进或替换它的新颖想法或方法(当然,存在一些变体,但没有新颖之处)。 尽管大多数人似乎忽略了它或只是接受了它,但是EH 有一些巨大的缺点:异常对于代码是不可见的,并且它创建了许多可能的退出点。关于软件的Joel撰写了一篇有关它的文章。比较goto合适,让我重新考虑了EH。 我尽量避免使用EH,而只使用返回值,回调或适合目的的任何方法。但是,当您不得不编写可靠的代码时,这些天就不能忽略EH:它以开头new,可能会引发异常,而不是像过去那样仅返回0。这使得任何一行C ++代码都容易受到异常的影响。然后,C ++基本代码中的更多地方会引发异常……std lib会这样做,依此类推。 感觉就像在摇摇欲坠的地面上行走 ..因此,现在我们被迫注意例外! 但是它很难,真的很难。您必须学习编写异常安全代码,即使您有一定的经验,仍然需要仔细检查任何一行代码以确保安全!或者,您开始在各处放置try / catch块,这会使代码混乱,直到达到无法读取的状态为止。 EH替换了旧的干净确定性方法(返回值..),该方法仅具有一些但可以理解且易于解决的缺点,但该方法会在代码中创建许多可能的退出点,并且如果您开始编写捕获异常的代码(您会被迫在某个时候执行),然后它甚至会在您的代码中创建大量路径(catch块中的代码,考虑一个服务器程序,在该服务器程序中您需要除std :: cerr之外的其他日志记录功能。)。EH有优势,但这不是重点。 我的实际问题: 您是否真的编写异常安全代码? 您确定最后一个“生产就绪”代码是异常安全的吗? 您甚至可以确定是吗? 您知道和/或实际使用可行的替代方法吗?



4
使用Python'with'语句时捕获异常
令我感到羞耻的是,我不知道如何处理python'with'语句的异常。如果我有代码: with open("a.txt") as f: print f.readlines() 我真的很想处理“找不到文件异常”以便执行某些操作。但是我不能写 with open("a.txt") as f: print f.readlines() except: print 'oops' 而且不能写 with open("a.txt") as f: print f.readlines() else: print 'oops' 在try / except语句中包含“ with”,否则将不起作用:不会引发异常。为了以Python方式处理“ with”语句中的失败,我该怎么办?

11
捕获和重新抛出.NET异常的最佳实践
捕获异常并重新抛出异常时应考虑哪些最佳实践?我想确保保留Exception对象的InnerException和堆栈的跟踪信息。以下代码块之间的处理方式是否有所不同? try { //some code } catch (Exception ex) { throw ex; } VS: try { //some code } catch { throw; }

6
捕获异步void方法引发的异常
使用Microsoft .NET的异步CTP,是否可以在调用方法中捕获由异步方法引发的异常? public async void Foo() { var x = await DoSomethingAsync(); /* Handle the result, but sometimes an exception might be thrown. For example, DoSomethingAsync gets data from the network and the data is invalid... a ProtocolException might be thrown. */ } public void DoFoo() { try { Foo(); …


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.