【问题标题】:How to throw exception in a .oct file in octave?如何在八度的.oct文件中抛出异常?
【发布时间】:2018-03-08 06:29:48
【问题描述】:

我目前正在使用 .oct 文件开发 geotiff 八度音程的读写功能。我浏览了 octave 文档,但找不到太多关于抛出异常的信息。这是否意味着我可以像在 C++ 中那样通过简单地编写 throw “错误消息”来抛出异常?

【问题讨论】:

  • 我的代码现在已经成型了,你有没有像你在 2015 年所说的那样把它上传到 github 上?其他一些人对 libgeotiff 的 Octave 包装器感兴趣
  • 请向我们提供您在 geotiff 中所做的更新,并链接到您的代码。安迪的回答看起来也不错。

标签: exception error-handling octave


【解决方案1】:

有两种方法,诚然,它们记录在两个完全不同的地方,没有交叉链接/交叉引用,这是没有意义的,如果您不知道函数/关键字,您将找不到它们:

  • error() 引发错误,从而停止程序。见12.1 Raising Errors

    error("[%s] Here be wyrms", pkgname)

  • assert() 都测试条件,然后使用可自定义的消息引发error()(所以不要这样做if (cond) ... error(...) ... endif)。 见B.1 Test Functions

    % 1. Produce an error if the specified condition is zero (not met).
    assert (cond) assert (cond, errmsg) assert (cond, errmsg, …) assert (cond, msg_id, errmsg, …)

    % 2a. Produce an error if observed (expression) is not the same as expected (expression); Note that observed and expected can be scalars, vectors, matrices, strings, cell arrays, or structures.
    assert (observed, expected)

    % 2b. a version that includes a (typically floating-point) tolerance assert (observed, expected, tol)

  • 另见命令fail()

【讨论】:

  • +1,你会在哪里预期交联?如果您可以提供变更集,我很高兴审查并推送它
  • @Andy 函数应该列在octave.org/doc/v4.2.0/…页面上。
  • @Andy:我在上面说过应该提到assert() 并从error() docpage 交叉引用,反之亦然。我不再积极使用 Octave,否则我会提供一个变更集。
【解决方案2】:

是的,你可以使用类似的东西

error ("mynewlib: Hello %s world!", "foo");

发出被捕获和查看的错误信号。

(我个人认为这些问题真的应该去 GNU Octave 邮件列表,在那里你可以找到核心开发人员和 octave-forge 包维护者)。

我猜你想围绕libgeotiff 构建一个包装器?看看 octave-image 包!您在哪里托管您的代码?

./examples/code/unwinddemo.cc 可能对您来说也很有趣。它展示了如何使用 unwind_protect 和定义用户错误处理程序。

http://hg.savannah.gnu.org/hgweb/octave/file/3b0a9a832360/examples/code/unwinddemo.cc

也许你的函数应该被合并到 octave-forge 映射包中:“http://sourceforge.net/p/octave/mapping/ci/default/tree/

【讨论】:

  • 我正在使用 gdal。现在我正在使用一个 pvt repo...一旦它成形就会放入 github..谢谢
  • @Andy 回复:您的第一段“我个人认为这些问题确实应该发送到 GNU Octave 邮件列表,在那里您可以找到核心开发人员和 octave-forge 包维护人员。”:正如 StackOverflow 尝试的那样为了成为所有好的答案的一个地方,我认为没有理由不在这里记录任何潜在的问题答案。与 SO 相比,邮件列表通常更不稳定且更难搜索。
  • @Andy 但是,真的,任何这样的讨论都可能属于meta
  • 这就是我想知道的。 stackoverflow 是最后一个提出问题的地方还是第一个?当然,我说的不是那么琐碎的问题。
  • @NielsAbildgaard 我只这么认为。 1% 的 Octave 开发人员使用 StackOverflow,因此如果您有关于 Octave 内部(在本例中为 C++ API)的问题,在这里得到答案的机会很低或不具有代表性。此外,错误报告应该转到恕我直言,他们被读取的错误跟踪器,而不是 SO。
猜你喜欢
  • 1970-01-01
  • 2016-05-16
  • 1970-01-01
  • 2012-01-24
  • 2011-07-24
  • 2011-02-22
  • 2020-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多