问题标签 [assert]

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 投票
8 回答
47691 浏览

python - 让 Python 的 `assert` 抛出我选择的异常

我可以assert抛出一个我选择而不是的异常AssertionError吗?

更新:

我将解释我的动机:到目前为止,我已经进行了断言式测试,这些测试引发了我自己的异常;例如,当您Node使用某些参数创建一个对象时,它会检查参数是否适合创建节点,如果不是,它会 raise NodeError

但我知道 Python 有一种-o跳过断言的模式,我希望有这种模式,因为它可以让我的程序更快。但我仍然希望有自己的例外。这就是为什么我想在我自己的异常中使用断言。

0 投票
9 回答
319931 浏览

c++ - 什么是“断言”功能?

我一直在学习 OpenCV 教程并遇到了这个assert功能;它有什么作用?

0 投票
2 回答
364 浏览

asp.net - 强制asp.net assert 抛出异常?

我的断言不会生成消息框,有时它们会发送消息以调试输出并结束线程,而不会给我更积极的通知。我怎样才能强制我所有的 Debug.Asserts 只是抛出,所以我知道我看到了它们?

0 投票
1 回答
1860 浏览

c++ - ASSERT 在 CDC SelectObject() 调用上失败 - 我可以尝试什么?

我正在开发一个多线程的 win32 MFC 应用程序。我们正在渲染地图并将其与顶部的自定义渲染对象一起显示在用户界面的窗格中。渲染速度很慢(~800 毫秒),这发生在用户界面线程上。

我正在尝试将渲染移动到它自己的线程上,以便菜单仍然保持活泼,而其他渲染仍然可以在后台运行。Draw 线程将使用它自己的 CDC 持续渲染。UI 线程将调用重绘函数,该函数锁定互斥体,并获取最后一个快照CBitmap并使用 UI 的CDC. 使用 Draw 线程的 C 的每个位置CD都被互斥锁锁定。

我看到的是线程创建了一个新的CBitmapvia CreatCompatibleBitmap,然后尝试将新CBitmap对象选择到 Draw 线程的CDC.

此时在CGdiObject::FromHandle()中出现debug ASSERT失败。

第二个ASSERT失败是因为与m_hObject传入的句柄不匹配。基本上,MFC 正在获取句柄,并进行查找以获取与刚刚创建的CBitmap对象不匹配的对象。CBitmap

这听起来很熟悉吗?会发生什么导致该FromHandle方法返回错误的对象?我CDC为 Draw 线程创建一个,然后一遍又一遍地重复使用它的方式是否存在根本缺陷?有什么方法可以帮助调试/解决这个问题吗?

0 投票
4 回答
3553 浏览

java - 为什么junit4没有双[]s的Assert.assertArrayEquals()?

Junit4 中似乎有Assert.assertArrayEquals()除 double 以外的所有原语的方法,例如

但不是

或者

(后者说明双打的可变范围)。我不应该写这样一个函数有根本原因吗?

0 投票
4 回答
12173 浏览

c++ - 释放在不同 DLL 中分配的内存

我有一个使用另一个 DLL 文件的 DLL 文件的 EXE 文件。出现了这种情况:

在 DLL 文件 1 中:

在 DLL 文件 2 中:

在发布模式下,一切正常。但是在调试模式下,我在文件夹向量之一的析构函数中遇到断言失败std::strings(当文件夹在 aFunction 结束时超出范围时):

dbgheap.c : line 1274

我认为这是因为内存已在 DLL 文件 1 的堆上分配,但在 DLL 文件 2 中被释放。

中的评论dbgheap.c似乎非常坚持认为这是一个问题。

如果我只是忽略它似乎可以正常工作,为什么会出现这样的问题?有没有一种非断言失败的方式来做到这一点?

0 投票
3 回答
182 浏览

python - 检查数值 Python 代码中的参数

我发现自己一直在为数字运算编写相同的参数检查代码:

有没有更好的办法?我被告知不要对这些事情使用“断言”(尽管我没有看到问题,除了不知道导致错误的变量的值)。

编辑:为了澄清,参数通常只是数字,错误检查条件可能很复杂,不平凡,以后不一定会导致异常,而只会导致错误的结果。(不稳定的算法,无意义的解决方案等)

0 投票
8 回答
74124 浏览

c++ - static_assert 有什么作用,你会用它做什么?

你能举一个例子,static_assert(...)('C++11') 可以优雅地解决手头的问题吗?

我熟悉运行时assert(...)。我什么时候应该static_assert(...)比常规更喜欢assert(...)

另外,在boost有一个东西叫做BOOST_STATIC_ASSERT,它和 一样static_assert(...)吗?

0 投票
7 回答
12094 浏览

python - Python的基本优化模式有什么用?(蟒蛇-O)

Python 有一个-O可以用来执行解释器的标志。该选项将生成“优化”字节码(写入 .pyo 文件),并给出两次,它将丢弃文档字符串。从 Python 的手册页:

-O 打开基本优化。这会将已编译(字节码)文件的文件扩展名从 .pyc 更改为 .pyo。给出两次,导致文档字符串被丢弃。

在我看来,此选项的两个主要功能是:

  • 剥离所有断言语句。这牺牲了对腐败程序状态的防御以换取速度。但是你不需要大量的断言语句来产生影响吗?您是否有任何值得这样做的代码(并且理智?)

  • 剥离所有文档字符串。在哪个应用程序中内存使用如此关键,以至于这是一个胜利?为什么不将所有内容都放入用 C 编写的模块中呢?

这个选项有什么用?它有现实价值吗?

0 投票
6 回答
5999 浏览

c - 带有常量数组的 C 编译时断言

我有一个在编译时初始化的非常大的常量数组。

我想验证数组是否已正确初始化,例如:

我的问题是我想在编译时验证这一点。我在这个线程中阅读了 C 中的编译时断言:C Compiler asserts。但是,那里提供的解决方案建议使用负值定义一个数组作为编译错误的大小:

并使用:

提供的解决方案对我不起作用,因为我需要验证我的常量数组值,并且 C 不允许使用常量数组值初始化数组:

有什么办法吗?其他一些编译时断言?