- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已阅读 http://adv-r.had.co.nz/Exceptions-Debugging.html据我了解,我们有三种主要类型的条件(我称之为错误):
据我所知,错误是一种非常不恰当的东西,它可能对我们的功能造成非常大的危害(最严重的错误类型)。但我无法区分警告和消息。我会说一条消息共享有关我们代码的某些可能错误部分的附加信息,但这不会直接影响我们的代码(这意味着我们的代码可以工作,但还有一些我们应该注意的附加信息)。
最佳答案
首先,您应该清楚“错误”是什么意思。错误只是您的代码的一部分,它没有按照您预期的方式运行。您的代码可能有错误,但不会给出任何错误、警告或消息。例如,下面的函数有一个明显的错误:
add_two_numbers <- function(a, b)
{
return(a - b);
}
add_two_numbers(2, 2)
#> [1] 0
糟糕!我想让它加上数字,但我的函数却减去了它们。 那是一个bug,如果我在这个阶段没有发现它,那么我以后依靠它来进行计算可能会遇到麻烦。
错误、警告和消息不是错误。他们是故意的。它们由功能或程序包的作者设置,以确保软件按预期工作,并在用户尝试执行软件不打算执行或无法执行的操作时提醒用户。
当函数必须停止计算并中止时,通常会使用错误。这在测试函数输入时很有用:
add_two_numbers <- function(a, b) {
if(!is.numeric(a)) stop(paste(a, "is not a number"))
if(!is.numeric(b)) stop(paste(b, "is not a number"))
return(a + b)
}
add_two_numbers("hello", 2)
#> Error in add_two_numbers("hello", 2): hello is not a number
add_two_numbers(2, "world")
#> Error in add_two_numbers(2, "world"): world is not a number
add_two_numbers(2, 2)
#> [1] 4
您会注意到对该函数的前两次调用没有返回任何内容 - 它们只是发出错误并停止。
我们可能想要这样做的原因是试图给用户一些有用的指导。例如,如果我们刚刚:
add_two_numbers <- function(a, b) a + b
然后当我们尝试传递错误的参数类型时,我们会得到:
add_two_numbers("hello", 2)
#> Error in a + b : non-numeric argument to binary operator
这个错误是由 R 解析器抛出的,与我们的具体消息相比有点模糊。当我们编写自己的错误消息时,我们试图预测更基本的错误何时会发生并阻止它发生,以防止它发生并为我们的用户提供有用的信息。
同样,我们可以写一条警告信息。这通常在我们想让用户知道某些事情可能会产生意想不到的结果时使用。例如:
as.numeric(c("1", "2", "3", " "))
#> [1] 1 2 3 NA
#> Warning message:
#> NAs introduced by coercion
我们是否希望将空白区域转换为 NA
,或者空白区域是数据输入错误吗?两者都可能为真,因此该函数会继续处理数据并提供输出,但会警告您这可能不是您所期望的。
如果我们想要一个发出警告的函数,很容易写一个:
pointless <- function() {
warning("This function is pointless")
return(1)
}
pointless()
#> [1] 1
#> Warning message:
#> In pointless() : This function is pointless
所以我们的函数仍然会返回一个答案,但它会在我们使用它时给我们一个显着的警告。
最后,消息就是这样 - 给用户的消息不构成函数输出的一部分,也不一定是坏消息,但向控制台写入一条消息可能是有用的信息。
add_two_numbers <- function(a, b) {
message("Have a nice day")
return(a + b)
}
add_two_numbers(2, 2)
#> Have a nice day
#> [1] 4
关于r - 警告和消息有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63846536/
你好,我正在尝试在 opensuse 中创建一个 Shell 脚本来创建 MySqlUsers,但是当我尝试运行它时,我得到了这个错误: Warning: Could not start progra
我阅读了有关此错误的所有信息,但未能找到任何解决方案。 我有一个看起来像这样的简单页面: $xmlfile = "/var/www/marees.xml"; //Fichier dans lequel
运行 Websphere App 服务器 V8.5 Liberty Profile。我找不到任何可以解决这些警告的帮助。我在 eclipse 。 ************** He
我尝试在 GC AppEngine 上部署应用程序。部署过程中没有错误,但应用程序无法运行(仅显示加载页面)。日志中唯一一个奇怪的原始 OpenBLAS WARNING - could not det
我刚开始学习 RestKit。我正在尝试使用它来使用 Foursquare api 获取附近的 field 。但每次我尝试“objectLoader:(RKObjectLoader *)objectL
我对 Vuejs 比较陌生,每次按键时都会收到以下警告: [Vue warn]: $attrs is readonly. found in ---> at src\component
Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external
我在尝试修改某些表时不断收到此错误。这是我的代码: /** = 1){ //$this->mysqli->autocommit(FALSE); //insert th
当我尝试使用 PHP 的 ftp_put 函数上传文件时,早些时候出现错误: 警告:ftp_put() [function.ftp-put]:无数据连接 现在,我尝试开启被动模式: ftp_pasv(
我一直在努力让这段代码适用于现阶段的年龄。它旨在计算一个范围内的素数,我已经编写了一种方法来打印它们。不幸的是,代码将无法编译,引用警告: “警告:[未检查] 未检查调用 add(E) 作为原始类型
尝试使用带有架构组件和Kotlin的Android Studio 3 Canary 5构建示例会给出此警告。 谁能告诉我原因? 谢谢,Ove 编辑#1: 这是Dan Lew前段时间制作的样本 http
我正在编写一个 Shiny 的应用程序,它运行得非常好,突然我收到两条警告消息。我已经回到以前运行良好的副本,它们现在显示相同的错误消息,所以我真的很困惑。我的代码仍然运行并在我 Shiny 的仪表板
03-25 05:52:15.329 8029-8042/com.mgh.radio W/MediaPlayerNative: info/warning (703, 0) 03-25 05:52:15
我在构建时在我的 gradle 控制台中收到一条警告消息: 警告:[options] 引导类路径未与 -source 1.7 一起设置 1 条警告 我怎样才能解决这个问题? 任何帮助表示赞赏! 最佳答
我有下一个代码: 测试.c #include "a1.h" int main() { int a = 8; foo(a); return a; } a1.h void foo
我的程序中有一个 WORD 变量。 WORD hour; 但是当我比较它的时候 if(hour>=0 && hour=0 && hour=0 的比较,它始终适用于 hour 是 WORD 类型,它是一
安全研究人员警告称,一个最新的严重的Java错误,其本质与目前在全球范围内利用的臭名昭著的 Log4Shell 漏洞相同 。 CVE-2021-42392 尚未在国家漏洞数据库 (NVD) 中
安装SqlServer2005时“版本变更检查 (警告)"问题排查 今天同事在安装SqlServer2005时遇到“版本变更检查 (警告) ”问题导致安装失败,警告提示如下: - 版本
我的 UWP 项目中出现以下警告。我已经标记了解决方案的示例,但我更感兴趣的是为什么在同一平台上创建另一个空项目时不会出现此警告? APPX4001: Build property AppxBundl
我试图修复我的登录脚本,在我的本地主机上它可以工作,但上传到我的在线测试服务器时,注销被破坏,我得到这个错误: Warning: session_destroy() [function.session
我是一名优秀的程序员,十分优秀!