- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么大多数博客都说无法处理错误?例如,在以下代码中,我已经这样做了。为什么大多数博客都声称不应处理错误?
package errors;
public class StackOverflowErrorDemo {
public void method1() {
this.method2();
}
public void method2() {
this.method1();
}
public static void main(String sri[]) {
try {
StackOverflowErrorDemo k = new StackOverflowErrorDemo();
k.method1();
} catch(StackOverflowError error) {
System.out.println(" Inside catch of stackoverflow");
}
System.out.println(" after error has been caught!!");
}
}
最佳答案
鉴于这是一个相当广泛的,开放式的问题,不太可能特别适合SO,因此我不确定是否要对此作出回应,但我将尝试将我的回答限于您发布的代码。
举个例子,您提供的示例并不是真正的异常行为。该程序的正确行为依赖于它引发StackOverflowError的行为。如果未引发此错误,它将无法正常工作。您可以检测到此类错误的事实并不能真正证明所有错误都可以以明智的方式捕获和处理。相反,它证明您可以检测到已发生异常。一旦检测到此类异常,是否需要采取明智的措施以使您仍然可以产生正确的输出和明智的行为,将完全取决于应用程序。
如果我正确理解了您的主张,那么“无法处理大多数错误”这一点实际上意味着,当您为真正异常的行为达到真正的“错误处理”时,您不太可能以明智的方式进行恢复。例如:如果您的应用程序是某种数据库驱动的应用程序,并且数据库消失了,那么您几乎无法提供明智的行为。同样,如果您达到了程序不变量被上游输入验证不足所破坏的地步,那么除了放弃和出错之外,您可能无能为力。
关于java - 有时可以发现并处理错误,那么为什么大多数博客都声称应该处理所有错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26007254/
我正在尝试解决为什么 Ruby 没有用空格分割我的字符串。例如: [1] pry(#)> msg => "!iex [email protected]|[email protected]> Firs
我正在尝试解决为什么 Ruby 没有用空格分割我的字符串。例如: [1] pry(#)> msg => "!iex [email protected]|[email protected]> Firs
这是我的 API 端点: [HttpPost] public int Post(SearchHistory searchHistory) { IDashboardRepository dash
我正在按照these guidelines验证来自Facebook API的signed_request参数。 ,但我在调用 Commons Codec 中的 Base64 类的某些方法时遇到了问题。
我有一个 json 结构数组: { data : [ { "num" : val , "time" : val } , ... ] } 我需要找到 num 的最大值和最短/最长时间,以及将对象移动到
我使用 Xcode 的 Refactor > Rename 命令尝试重命名 C 中的方法参数 this。 它声称 this 是“保留语言关键字”,但据我所知,事实并非如此。 这是 Xcode 中的错误
有人刚刚给我看了 A byte of Python 的旧 PDF 版本.根据本身,它是 3.0 版(本书的,而不是 Python 的),从 2014 年开始。在 Operators 部分, 有一个部分
问题: 您在 Intellij 中使用 VCS 系统并尝试提交内容。提交失败,Intellij 声称 index.lock 存在。你检查你的 repo 目录中的 .git/index.lock,发现它
我有以下 SAM 模板: AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Descriptio
这可能看起来微不足道,但我使用 Excel 来操作程序中的一些数据,然后以 tsv 格式输出数据。我想用 gnuplot 来绘制它,其复杂性不比 plot "filename" 复杂,但 gnuplo
我正在使用嵌入式 Jetty 启动标准 Java 网络应用程序。我的启动器是这样的: import org.eclipse.jetty.server.Server; import org.eclips
我正在阅读 Joshua Bloch 的 Effective Java,第 2 版,第 11 条:明智地覆盖克隆。 在第 56 页,他试图解释当我们重写某些类(如集合类)的 clone() 时,我们必
问题: 如 Fusion Location Provider API 所声称的,位置更新在室内不起作用。 发生了什么: 我尝试在我的 Android 应用程序中使用 LocationClient 实现
所以我只是尝试使用 NDK 构建一个库。我相信 Android.mk 和 Application.mk 文件是正确的,但它们是否正确无关紧要。 在NDK目录下执行make APP=hello时 And
我在 Android Studio 中尝试为我的模拟器安装 HAXM 时遇到了困难。我有一台 hp2000 笔记本;我将 Windows 8.1 更新到 Windows 8.1 Pro 以激活 Hyp
在我的程序中,我正在下载 misc。 PDF 文档,最后我想使用 Apache pdfbox (v1.8.8) 将它们合并到一个组合文档中。出于某种奇怪的原因,PDFMergerUtility 未能声
我正在尝试使用预先编写的接口(interface)编写队列类。接口(interface)包含方法 public void enqueue(T element); 我的类(class)看起来像 impo
有这样的东西: $(document).ready(function() { $("#myTable").dataTable({
我最近将一个 Android 应用程序从 Eclipse 移植到 Android Studio。我能够调试应用程序,甚至能够构建一个供客户端测试的发布版本。不幸的是,我不能再调试了。当我尝试从 And
每次,我在 Gerrit 中看到我的更改的 merged 状态并且我执行 git pull origin,我可以清楚地看到,我的更改/分支实际上没有已 merge 到 master 中。 请检查我的
我是一名优秀的程序员,十分优秀!