Questions tagged «exception»

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

6
在WPF应用程序中全局捕获异常?
我们有一个WPF应用程序,其中的某些部分可能会在运行时引发异常。我想全局捕获任何未处理的异常并将它们记录下来,但是否则继续执行程序,就好像什么都没发生一样(有点像VB的那样On Error Resume Next)。 这在C#中可能吗?如果是这样,我到底需要在哪里放置异常处理代码? 目前,我看不到任何可以包裹try/的点,catch并且可以捕获所有可能发生的异常。即使那样,我仍然会因为捕获而留下任何已执行的内容。还是我在这里以错误的方向思考? ETA:因为下面的许多人指出:该应用程序不是用于控制核电厂的。如果它崩溃了,那没什么大不了的,但是大多数与UI相关的随机异常在使用它的上下文中是很麻烦的。有(并且可能仍然有)其中的一些,因为它使用了插件架构,并且可能会被其他人扩展(在这种情况下也是学生;因此,没有经验的开发人员能够编写完全无错误的代码)。 至于捕获的异常:我确实将它们记录到日志文件中,包括完整的堆栈跟踪。这就是整个练习的重点。只是为了反驳那些从字面上把我比作VB的OERN的人。 我知道盲目地忽略某些错误类别是危险的,并且可能会损坏我的应用程序实例。如前所述,该程序对任何人都不是关键任务。在他们的正确思想中,没有人会相信人类文明的生存。它只是一个用于测试某些设计方法的小工具。软件工程。 为了立即使用该应用程序,异常不会发生很多事情: 没有异常处理-错误对话框和应用程序退出。必须重复实验,尽管可能要对另一个主题进行。尚未记录任何错误,这是不幸的。 通用异常处理–良性错误被捕获,没有造成危害。从我们在开发过程中看到的所有错误来看,这应该是常见的情况。忽略这种错误不会立即产生后果;核心数据结构已经过充分测试,因此很容易幸免。 通用异常处理–严重的错误被困,可能在以后崩溃。这可能很少发生。到目前为止,我们从未见过。无论如何,都会记录该错误,并且崩溃是不可避免的。因此,这在概念上与第一种情况相似。除了我们有堆栈跟踪。在大多数情况下,用户甚至不会注意到。 至于程序生成的实验数据:严重的错误在最坏的情况下只会导致不记录任何数据。细微的改变几乎不可能改变实验结果。即使在这种情况下,如果结果看起来可疑,也会记录错误;如果这是一个总体异常值,仍然可以丢弃该数据点。 总结一下:是的,我认为自己至少仍然是部分理智的人,并且我不认为会导致程序运行必定完全有害的全局异常处理例程。如前所述,取决于应用程序,这样的决定可能是有效的。在这种情况下,它被认为是一个有效的决定,而不是胡说八道。对于任何其他应用程序,该决定可能看起来有所不同。但是请不要指责我或从事该项目的其他人可能因为我们无视错误而震惊了整个世界。 旁注:该应用程序只有一个用户。并不是像Windows或Office那样被成千上万的人所使用,因为在这种情况下,首先让用户冒起泡沫的成本已经完全不同了。

3
如何将JObject反序列化为.NET对象
我很高兴使用Newtonsoft JSON库。例如,我将JObject根据.NET对象创建一个,在这种情况下为Exception的实例(可能是子类,也可能不是子类) if (result is Exception) var jobjectInstance = JObject.FromObject(result); 现在我知道该库可以将JSON文本(即字符串)反序列化为对象 // only works for text (string) Exception exception = JsonConvert.DeserializeObject<Exception>(jsontext); 但是我正在寻找的是: // now i do already have an JObject instance Exception exception = jobjectInstance.???? 很明显,我可以从头JObject回到JSON文本,然后使用反序列化功能,但这对我来说似乎是倒退的。


30
在TransactionTooLargeException上做什么
我有一个TransactionTooLargeException。不可复制。在文档中说 活页夹交易失败,因为它太大。 在远程过程调用期间,调用的参数和返回值将作为存储在Binder事务缓冲区中的包裹对象进行传输。如果参数或返回值太大而无法放入事务缓冲区中,则调用将失败,并且将引发TransactionTooLargeException。 ... 当远程过程调用引发TransactionTooLargeException时,有两种可能的结果。客户端无法将其请求发送到服务(最有可能的情况是,参数太大而无法容纳在事务缓冲区中),或者服务无法将其响应发送回客户端(最有可能的情况是,返回值是太大而无法容纳事务缓冲区)。 ... 因此,我在某处传递或接收了超出未知限制的参数。哪里? stacktrace没有显示任何有用的信息: java.lang.RuntimeException: Adding window failed at android.view.ViewRootImpl.setView(ViewRootImpl.java:548) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:406) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:320) at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:152) at android.view.Window$LocalWindowManager.addView(Window.java:557) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2897) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) at android.app.ActivityThread.access$600(ActivityThread.java:139) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:4977) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) at dalvik.system.NativeStart.main(Native Method) Caused by: …
239 android  exception 


7
Java List.add()UnsupportedOperationException
我尝试将对象添加到List<String>实例,但抛出UnsupportedOperationException。有人知道为什么吗? 我的Java代码: String[] membersArray = request.getParameterValues('members'); List<String> membersList = Arrays.asList(membersArray); for (String member : membersList) { Person person = Dao.findByName(member); List<String> seeAlso; seeAlso = person.getSeeAlso(); if (!seeAlso.contains(groupDn)){ seeAlso.add(groupDn); person.setSeeAlso(seeAlso); } } 错误信息: java.lang.UnsupportedOperationException java.util.AbstractList.add(未知源) java.util.AbstractList.add(未知源) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

7
使自定义.NET Exception可序列化的正确方法是什么?
更具体地说,当异常包含自定义对象时,自定义对象本身可以序列化也可以不序列化。 举个例子: public class MyException : Exception { private readonly string resourceName; private readonly IList<string> validationErrors; public MyException(string resourceName, IList<string> validationErrors) { this.resourceName = resourceName; this.validationErrors = validationErrors; } public string ResourceName { get { return this.resourceName; } } public IList<string> ValidationErrors { get { return this.validationErrors; } } } …


20
什么时候应该使用Debug.Assert()?
我已经获得CS学位,现在已经是专业软件工程师大约一年了。我已经在C ++和C中了解断言了一段时间了,但是直到最近才完全不知道它们存在于C#和.NET中。 我们的生产代码不包含任何断言,我的问题是…… 我应该在生产代码中开始使用Asserts吗?如果是这样,什么时候最合适使用它?这样做更有意义吗 Debug.Assert(val != null); 要么 if ( val == null ) throw new exception();

26
如何解决java.lang.NoClassDefFoundError?
我已经尝试了Oracle Java教程中的两个示例。它们都可以正常编译,但是在运行时都出现此错误: Exception in thread "main" java.lang.NoClassDefFoundError: graphics/shapes/Square at Main.main(Main.java:7) Caused by: java.lang.ClassNotFoundException: graphics.shapes.Square at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 1 more 我想我可能将Main.java文件放在错误的文件夹中。这是目录层次结构: graphics ├ Main.java ├ shapes | ├ Square.java | ├ Triangle.java ├ linepoint | ├ Line.java | …

22
如何在JavaScript中创建自定义错误?
出于某种原因,在以下代码段中,似乎构造函数委托不起作用: function NotImplementedError() { Error.apply(this, arguments); } NotImplementedError.prototype = new Error(); var nie = new NotImplementedError("some message"); console.log("The message is: '"+nie.message+"'") 运行此给出The message is: ''。关于为什么的任何想法,或者是否有更好的方法来创建新的Error子类?我不知道apply的本地Error构造函数是否存在问题?

12
处理来自Java ExecutorService任务的异常
我正在尝试使用Java的ThreadPoolExecutor类以固定数量的线程运行大量繁重的任务。每个任务都有很多地方,在这些地方可能会由于异常而失败。 我已经继承了子类,ThreadPoolExecutor并且重写了afterExecute应该提供运行任务时遇到的任何未捕获异常的方法。但是,我似乎无法使其正常工作。 例如: public class ThreadPoolErrors extends ThreadPoolExecutor { public ThreadPoolErrors() { super( 1, // core threads 1, // max threads 1, // timeout TimeUnit.MINUTES, // timeout units new LinkedBlockingQueue<Runnable>() // work queue ); } protected void afterExecute(Runnable r, Throwable t) { super.afterExecute(r, t); if(t != null) { System.out.println("Got an …

18
何时选择已检查和未检查的异常
在Java(或任何其他具有检查的异常的语言)中,当创建自己的异常类时,如何决定应检查还是不检查它? 我的直觉是,在调用者可能能够以某种有生产力的方式恢复的情况下,将要求使用检查异常,而对于无法恢复的情况,未检查异常将更多,但我会对其他人的想法感兴趣。

27
无法加载文件或程序集……参数不正确
最近,我在C#解决方案中遇到了以下异常: 错误2无法加载文件或程序集'Newtonsoft.Json,版本= 3.5.0.0,文化=中性,PublicKeyToken = b9a188c8922137c6'或其依赖项之一。参数错误。(来自HRESULT的异常:0x80070057(E_INVALIDARG)) 这既不依赖于我的代码也不依赖于程序集的名称(如Newtonsoft.Json本例所示)。 当我从解决方案中删除此dll时,编译器会在同一异常中告知另一个dll。所以我想应该在我的电脑上关闭/打开某些东西:)


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.