问题标签 [exception]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
592 浏览

exception - 如何跟踪 COM 对象异常?

我有一个带有一些COM 对象的DLL。有时,此对象会崩溃并在 Windows 事件日志中注册一个错误事件,其中包含大量十六进制信息。我不知道为什么会发生这种崩溃。

那么,如何跟踪那些 COM 对象异常呢?

0 投票
9 回答
72348 浏览

c# - 为什么密码错误会导致“填充无效,无法删除”?

我需要一些简单的字符串加密,所以我编写了以下代码(这里有很多“灵感” ):

代码似乎工作正常,除了在使用不正确的密钥解密数据时,我在解密字符串的 cs.Close() 行上收到 CryptographicException - “填充无效且无法删除”。

示例代码:

我的问题是,这是可以预期的吗?我原以为用错误的密码解密只会导致无意义的输出,而不是异常。

0 投票
3 回答
7717 浏览

c# - 尝试重新启动线程时发生 ThreadStateException

尝试重新启动线程时,有时我会收到 System.Threading.ThreadStateException。有问题的代码如下:

所以有两个问题——这是正确的做事方式吗,有没有办法防止错误发生?

0 投票
3 回答
15057 浏览

asp.net-mvc - 如何将用户重定向到 ASP.NET MVC 中的自定义 404 页面而不是引发异常?

我希望能够捕获用户请求不存在的控制器时引发的异常并将其重定向到 404 页面。我怎样才能做到这一点?

例如,用户请求http://www.nosite.com/paeges/1应该是 /pages/)。我怎样才能让他们重新定向到 404 而不是异常屏幕?

0 投票
7 回答
6574 浏览

php - 如何在 PHP 中记录未捕获的异常?

我发现了如何将错误转换为异常,如果它们没有被捕获,我会很好地显示它们,但我不知道如何以有用的方式记录它们。简单地将它们写入文件是没有用的,不是吗?当您还不知道导致异常的原因时,您是否会冒险访问数据库?

0 投票
11 回答
1213 浏览

c# - 您是为特定问题编写例外还是一般例外?

我有一些代码将用户 ID 提供给实用程序,然后将电子邮件发送给该用户。

MailException可能由于多种原因而引发,电子邮件地址问题,邮件模板问题等。

我的问题是:你是为这些异常中的每一个创建一个新的异常类型,然后单独处理它们,还是你创建一个 MailException 然后在允许的异常中存储一些东西(计算机可读的东西,而不是描述文本)我们根据实际发生的情况做不同的事情。

编辑:作为澄清,异常不适用于日志等等,这与代码对它们的反应方式有关。继续以邮件为例,假设当我们发送邮件时,它可能会因为您没有电子邮件地址而失败,或者因为您没有有效的电子邮件地址,或者它可能会失败......等等。

我的代码希望对这些问题中的每一个做出不同的反应(主要是通过更改返回给客户端的消息,但也更改实际逻辑)。

最好是为这些问题中的每一个问题或一个具有内部内容的总括异常(例如枚举)提供一个异常实现,让代码区分它是什么类型的问题。

0 投票
3 回答
5479 浏览

c# - 您如何使用 MVP 将服务层消息/错误传达给更高层?

我目前正在从 UI 编写一个 ASP.Net 应用程序。我正在实现一个 MVP 架构,因为我厌倦了 Winforms,并且想要更好地分离关注点的东西。

因此,对于 MVP,Presenter 处理 View 引发的事件。这是我用来处理用户创建的一些代码:

我使用内置的 .Net 验证控件完成了主要表单验证,但现在我需要验证数据是否充分满足服务层的标准。

假设可以显示以下服务层消息:

  • 电子邮件帐户已存在(失败)
  • 输入的引用用户不存在(失败)
  • 密码长度超过数据存储允许的长度(失败)
  • 成员创建成功(成功)

我们还假设 UI 无法预期的服务层中将有更多规则。

目前,如果事情没有按计划进行,我会让服务层抛出异常。这是一个足够的策略吗?这段代码对你们来说有味道吗?如果我写了一个这样的服务层,你会不会因为必须编写以这种方式使用它的 Presenter 而感到恼火?返回代码似乎太老套了,布尔值不够丰富。


不由 OP 编辑​​:合并由 OP 作为答案发布的后续评论


Cheekysoft,我喜欢 ServiceLayerException 的概念。对于我没有预料到的异常,我已经有了一个全局异常模块。您是否觉得让所有这些自定义异常变得乏味?我在想捕获基本异常类有点臭,但不确定从那里进展如何。

tgmdbm,我喜欢那里巧妙地使用 lambda 表达式!


感谢 Cheekysoft 的跟进。因此,如果您不介意在未处理异常的情况下将用户显示为单独的页面(我主要是 Web 开发人员),那么我猜这将是策略。

但是,如果我想在用户提交导致错误的数据的同一视图中返回错误消息,那么我必须在 Presenter 中捕获异常?

以下是 Presenter 处理 ServiceLayerException 时 CreateUserView 的样子:

创建用户

对于这种错误,最好将其报告给同一个视图。

无论如何,我认为我们现在超出了我原来的问题的范围。我会玩弄你发布的内容,如果我需要更多详细信息,我会发布一个新问题。

0 投票
15 回答
54184 浏览

exception - 捕获一般异常真的那么糟糕吗?

在使用 FXCop 分析一些遗留代码时,我突然想到在 try 块中捕获一般异常错误真的很糟糕,或者您是否应该寻找特定的异常。请在明信片上思考。

0 投票
3 回答
3025 浏览

java - 将Java Socket配置为在断开连接时快速失败?

我的服务器上有一个监听端口,我使用 Java 类和Socket接口连接到该端口,即

然后我在 autoflush 模式下抓取一个OutputStream, 用 a 装饰PrintWriter,我在笑——除非监听端口关闭。然后我得到

而且我似乎无法检测到程序中的问题 - 我尝试isConnected()在套接字上使用该方法,但它似乎不知道连接已关闭。

我想在下次尝试写入 Socket 时注意问题,以便我可以尝试重新连接并报告问题。

请问有什么建议吗?

谢谢大家

0 投票
5 回答
872 浏览

exception - 异常处理:契约与异常方法

我知道异常处理的两种方法,让我们看看它们。

  1. 合同方式。

    当一个方法没有按照它在方法头中所说的去做时,它会抛出一个异常。因此,该方法“承诺”它将执行该操作,如果由于某种原因失败,它将抛出异常。

  2. 非凡的方法。

    只有当真正奇怪的事情发生时才抛出异常。当您可以使用正常的控制流(If 语句)解决问题时,您不应该使用异常。您不会像在合同方法中那样将异常用于控制流。

让我们在不同的情况下使用这两种方法:

我们有一个 Customer 类,它有一个名为 OrderProduct 的方法。

合同方式:

特殊方法:

在这里,我更喜欢特殊的方法,因为假设客户没有中彩票而没有钱并不是真正的特殊。

但这是我在合同风格上犯错的情况。

卓越的:

当我调用一个名为 CreateCar 的方法时,我该死的期待一个 Car 实例而不是一些糟糕的空指针,它会在十几行之后破坏我正在运行的代码。因此,我更喜欢合同而不是这个:

你使用哪种风格?您认为异常的最佳通用方法是什么?