Questions tagged «exception»

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

8
JavaScript异常处理
捕获JavaScript中引发的所有异常的最佳技术是什么? 显然,最好的技术是使用try ... catch。但是,使用异步回调等,可能会变得棘手。 我知道IE和Gecko浏览器都支持window.onerror,但是Opera和Safari呢? 这是我想拥有集中式异常处理解决方案的一堆测试用例: // ErrorHandler-Test1 var test = null; test.arg = 5; // ErrorHandler-Test2 throw (new Error("Hello")); // ErrorHandler-Test3 throw "Hello again"; // ErrorHandler-Test4 throw { myMessage: "stuff", customProperty: 5, anArray: [1, 2, 3] }; // ErrorHandler-Test5 try { var test2 = null; test2.arg = 5; } …

7
什么时候以及如何使用异常处理?
我正在阅读有关异常处理的信息。我获得了有关什么是异常处理的一些信息,但是我有几个问题: 什么时候抛出异常? 除了抛出异常,我们还可以使用返回值来指示错误吗? 如果我通过try-catch块保护所有功能,会不会降低性能? 什么时候使用异常处理? 我看到了一个项目,该项目中的每个函数都包含一个try-catch块(即,整个函数内的代码被try-catch块包围)。这是一个好习惯吗? try-catch和__try __except有什么区别?


6
为什么将Python异常命名为“错误”?
为什么Python的异常命名为“错误”(例如ZeroDivisionError,NameError,TypeError),而不是“例外”(例如ZeroDivisionException,NameException,TypeException)。 我来自Java背景,最近开始学习Python,这令人困惑,因为在Java中错误与异常之间是有区别的。 Python也有区别吗?
82 java  python  exception 

28
为什么Java人们经常默默地消费异常?
我以前从未进行过任何认真的Java编码,但是我根据现有技能(Delphi和C#)学习了语法,库和概念。我很难理解的一件事是,我看到如此多的代码在printStackTrace像这样的情况下静默地消耗异常: public void process() { try { System.out.println("test"); } catch(Exception e) { e.printStackTrace(); } } 在我遇到的几乎所有Java文章和项目中都有类似的代码。根据我的知识,这是非常糟糕的。几乎应该总是将异常转发给外部上下文,如下所示: public void process() { try { System.out.println("test"); } catch(Exception e) { e.printStackTrace(); throw new AssertionError(e); } } 大多数情况下,异常应该最终在属于底层框架(例如Java Swing)的最外层循环中进行处理。为什么在Java世界中看起来像这样的代码规范?我很困惑 根据我的背景,我希望完全删除printStackTrace 。我只是将其作为未处理的aka RuntimeException(或者甚至更好AssertionError)扔掉,然后在最合适的位置捕获并记录它:框架最外层的循环。 public void process() { try { System.out.println("test"); } catch(Exception e) { throw …

2
在Java中,URL连接何时关闭?
Java什么时候放开与URL的连接?我在URL或URLConnection上都没有看到close()方法,所以一旦请求完成,它会释放连接吗?我主要是询问是否需要在异常处理程序中进行任何清理。 try { URL url = new URL("http://foo.bar"); URLConnection conn = url.openConnection(); // use the connection } catch (Exception e) { // any clean up here? }

9
打印异常的堆栈跟踪
如何将异常的堆栈跟踪信息打印到stderr以外的流上?我发现的一种方法是使用getStackTrace()并将整个列表打印到流中。
81 java  exception 

28
为什么要保守地使用例外?
我经常看到/听到人们说例外情况应该很少使用,而永远不要解释原因。尽管这可能是正确的,但基本原理通常是一个轻浮的说法:“由于某种原因,它被称为例外”,在我看来,这似乎是一种受尊敬的程序员/工程师不应接受的解释。 有一系列问题可以使用异常来解决。为什么将它们用于控制流是不明智的?对它们的使用格外保守的背后的哲学是什么?语义学?性能?复杂?美学?惯例? 之前我已经看过一些性能分析,但是分析的水平与某些系统相关,而与其他系统无关。 同样,我不一定不同意在特殊情况下应该保存它们,但是我想知道共识的基础是什么(如果存在这种情况)。
80 c++  exception 

7
C ++异常:抛出std :: string
当我的C ++方法遇到奇怪的东西并且无法恢复时,我想抛出一个异常。可以扔一个std::string指针吗? 这是我期待做的事情: void Foo::Bar() { if(!QueryPerformanceTimer(&m_baz)) { throw new std::string("it's the end of the world!"); } } void Foo::Caller() { try { this->Bar(); // should throw } catch(std::string *caught) { // not quite sure the syntax is OK here... std::cout << "Got " << caught << std::endl; } }
80 c++  exception  stl 

2
解密.NET clr20r3异常参数P1..P10
clr20r3当我的应用程序遇到异常时,我试图破译与P1 ... P10参数相关联的含义,该参数写入事件日志。 我能找到的最好的是: P1:托管过程(例如 w3wp.exe) P2:托管进程版本(例如 6.0.3790.1830) P3:??? (例如 42435be1) P4:引发异常的程序集(例如 mrtables.webservice) P5:组装版本(例如 2.1.2.0) P6:??? (例如 4682617f) P7:??? (例如 129) P8:??? (例如 50) P9:引发的异常类型(例如 system.argumentexception) P10:??? (例如 NIL) 对clr20r3进行谷歌搜索提供了成千上万个样本参数值,有人可以尝试从中导出模式。 但是我希望能找到有关参数含义的文档,而不是有根据的猜测。 编辑:虽然我可以希望能得到规范的文档,但实际上我很高兴看到抛出异常的那一行在哪一行完成了堆栈跟踪。 奖励阅读 导致应用程序崩溃的未处理异常,日志中带有“ EventType clr20r3,P1 w3wp.exe”,但是那里没有详细信息 (寻求问题的帮助,而我们要求对参数的含义进行规范解释)
79 .net  exception  clr 

5
Oracle PL / SQL-使用自定义SQLERRM引发用户定义的异常
是否可以创建用户定义的异常并能够更改SQLERRM? 例如: DECLARE ex_custom EXCEPTION; BEGIN RAISE ex_custom; EXCEPTION WHEN ex_custom THEN DBMS_OUTPUT.PUT_LINE(SQLERRM); END; / 输出为“用户定义的异常”。是否可以更改该消息? 编辑:这是一些更多的细节。 我希望这可以说明我正在尝试做的更好的事情。 DECLARE l_table_status VARCHAR2(8); l_index_status VARCHAR2(8); l_table_name VARCHAR2(30) := 'TEST'; l_index_name VARCHAR2(30) := 'IDX_TEST'; ex_no_metadata EXCEPTION; BEGIN BEGIN SELECT STATUS INTO l_table_status FROM USER_TABLES WHERE TABLE_NAME = l_table_name; EXCEPTION WHEN NO_DATA_FOUND THEN -- …



1
Java等同于.NET System.InvalidOperationException
我对Java的异常包不如.NET那样熟悉。我处于一种情况,如果使用C#编程,我会抛出System.InvalidOperationException。 在创建自己的java.lang.RuntimeException子类之前,我需要知道是否应该在Java中抛出类似的异常类型。 确切的情况是: 我的类是一个提供int intValue()方法的值对象,该方法返回一个int值。但是,在某些情况下,当前值不能作为int提供,因此此类还提供了一个boolean isInteger()允许API用户知道何时intValue()可以安全地调用它们的方法。 如果主叫用户呼叫intValue()时isInteger()是false一个异常应该被抛出。 问题是:什么类型的异常? 我知道这个问题可能没有正确的答案,但是考虑到我在设计Java API方面没有太多经验,我想从其他Java开发人员那里了解他们在这种情况下可能会遇到的问题。 谢谢
77 java  exception 

9
安全处理异常时,避免出现第一次机会异常消息
以下代码捕获EOS异常 using (var reader = new BinaryReader(httpRequestBodyStream)) { try { while (true) { bodyByteList.Add(reader.ReadByte()); } } catch (EndOfStreamException) { } } 那么,为什么我的控制台中仍然会出现首次机会异常? mscorlib.dll中发生类型为'System.IO.EndOfStreamException'的第一次机会异常 有没有办法隐藏这些第一次机会异常消息?
77 c#  .net  exception 

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.