Tag: 线程exception

ASP.net MVC 不捕捉exception

在两个不同的应用程序中,一个是用VS2008 MVC项目自定义另一个样例MVC应用程序,[HandleError]不捕捉exception。 在示例应用程序中我有: [HandleError] public class HomeController : Controller { public ActionResult Index() { ViewData["Message"] = "Welcome to ASP.NET MVC!"; throw new Exception(); return View(); } public ActionResult About() { return View(); } } 这只是默认的控制器,抛出了一个用于testing的exception。 但它不起作用。 而不是去默认的error.aspx页面,它显示在浏览器中的debugging信息。 这个问题首先出现在我正在处理的自定义应用程序中,这导致我使用示例应用程序对其进行testing。 认为它与我在自定义应用程序中所做的更改有关,我将示例应用程序完全保持不变,并且在throw方法中throw的exception(yuck)。 我很难过 我错过了什么?

JUnittesting – 分析预期的exception

在JUnit中,我目前使用注解来预期在我的testing中有一个exception。 有没有办法分析这个exception? 例如,我期望一个CriticalServerException ,但我也想validationgetMessage方法的内容。

Rails 3中的dynamic错误页面

在Rails 2.3.x中,你可以像这样覆盖render_optional_error_file : # ApplicationController.rb protected def render_optional_error_file(status_code) render :template => "errors/500", :status => 500, :layout => 'application' end 但是,Rails 3不再拥有render_optional_error_file 。 相反,您需要覆盖rescue_action_in_public ,您可以这样做: # config/initializers/error_page.rb module ActionDispatch class ShowExceptions protected def rescue_action_in_public(exception) status = status_code(exception).to_s template = ActionView::Base.new(["#{Rails.root}/app/views"]) if ["404"].include?(status) file = "/errors/404.html.erb" else file = "/errors/500.html.erb" end body = template.render(:file => file) render(status, […]

设置多个@ControllerAdvice @ExceptionHandlers的优先级

我有@ControllerAdvice批注了多个类,每个都有一个@ExceptionHandler方法。 一个处理Exception的意图是,如果没有find更具体的处理程序,应该使用这个。 可悲的是,Spring MVC似乎总是使用最通用的情况( Exception ),而不是更具体的情况(例如IOException )。 这是如何期望Spring MVC的行为? 我试图从泽西模拟一个模式,它评估每个ExceptionMapper (等价的组件),以确定它处理的声明types距离抛出的exception有多远,并始终使用最近的祖先。

C#“使用”语法

使用捕获exception还是抛出它? 即 using (StreamReader rdr = File.OpenText("file.txt")) { //do stuff } 如果streamreader抛出一个exception是通过使用或抛出来捕获,所以调用函数可以处理它?

以编程方式抛出NullPointerException可以吗?

当有后置条件时,方法的返回值不能为空,可以做些什么? 我可以 assert returnValue != null : "Not acceptable null value"; 但断言可能被closures! 那么可以这样做 if(returnValue==null) { throw new NullPointerException("return value is null at method AAA"); } ? 或者是这样的情况下使用用户定义的exception(如NullReturnValueException)更好?

内存exception的C#Image.Clone

为什么我得到一个内存不足的例外? 所以这在C#中首次通过: splitBitmaps.Add(neededImage.Clone(rectDimensions,neededImage.PixelFormat)); 其中splitBitmaps是一个列表<BitMap>但这在VB中至less4次迭代: arlSplitBitmaps.Add(Image.Clone(rectDimensions,Image.PixelFormat)) 其中arlSplitBitmaps是一个简单的数组列表。 (是的,我试过在C#中的arraylist) 这是完整的部分: for (Int32 splitIndex = 0; splitIndex <= numberOfResultingImages – 1; splitIndex++) { Rectangle rectDimensions; if (splitIndex < numberOfResultingImages – 1) { rectDimensions = new Rectangle(splitImageWidth * splitIndex, 0, splitImageWidth, splitImageHeight); } else { rectDimensions = new Rectangle(splitImageWidth * splitIndex, 0, sourceImageWidth – (splitImageWidth * splitIndex), splitImageHeight); } […]

为什么我不能在C#中捕捉到一个通用的exception?

我正在对代码进行一些unit testing,这些代码可能会根据input引发许多exception。 所以我尝试了下面的代码:(例如简化) static void Main(string[] args) { RunTest<ArgumentException>(); } static void RunTest<T>() where T : Exception, new() { try { throw new T(); //throw new ArgumentException(); <– Doesn't work either } catch (T tex) { Console.WriteLine("Caught passed in exception type"); } catch (Exception ex) { Console.WriteLine("Caught general exception"); } Console.Read(); } 但是这总是会打印出“抓住一般exception”, catch(T tex)处理程序将永远不会工作。 […]

捕获在Android上运行的本机代码引发的exception

我目前正在进行的项目需要我编写跨平台程序实现的android部分。 我的应用程序通过android-ndk构build了一套核心function。 我发现,在本地代码中发生的任何exception/崩溃只能一次又一次地报告。 发生错误时,出现以下某种行为: 发生堆栈跟踪/内存转储并写入日志文件。 该程序消失(没有迹象表明,为什么突然,应用程序不再在那里)。 没有堆栈跟踪/转储或其他指示,本机代码崩溃。 程序消失。 java代码崩溃,出现NullPointerExceptionexception(通常在每个本地代码exception的地方,这是一个巨大的痛苦)。 通常会导致我花费相当长的时间来debugging为什么Java代码抛出一个错误只发现Java代码是好的,本机代码错误已被完全掩盖。 我似乎无法find任何方法来“绝缘”我的代码与本地代码中发生的错误。 Try / catch语句被完全忽略。 除了当我的代码被指责为罪魁祸首,我甚至没有机会警告用户,而不是发生错误。 有人可以帮我解决如何应对崩溃的本地代码的情况?

什么是AssertionError? 在这种情况下,我应该从我自己的代码中抛出?

在“Effective Java,2nd edition”这本书的第2部分,有这段代码,其中作者想要禁止对象的空初始化。 class Example { private Example() { throw new AssertionError(); } } 抛出的exception的types,在这里让我困惑。 我不明白,如果AssertionError是由于缺less更适合的错误或因为它应该是这样的抛出。 据我所知,当assert语句失败时,框架抛出这个错误。 另外,在javadoc它只是写 [AssertionError is]抛出以表示断言失败。 但是我没有看到这里被触犯的任何断言(真假陈述)。 当然“你不应该实例化这个类的一个项目”这个语句已经被违反了,但是如果这是背后的逻辑的话,那么我们都应该抛出AssertionError的东西,那显然不是什么情况。 FWIW,我刚刚扔了一个 new IllegalStateException("Must not instantiate an element of this class") 有什么问题吗? 在这种情况下,我应该在自己的代码中抛出一个AssertionError ? 对不起,如果这只是一个微妙的怀疑,但我在我的代码中使用这种模式很多,我想确保我做的是正确的事情。