为什么R抛出错误"错误值[3L]:没有循环中断/下一步,跳到顶层"而不是进入循环的下一次迭代?我在R版本2.13.1(2011-07-08)
for (i in seq(10)) {
tryCatch(stop(), finally=print('whoops'), error=function(e) next)
}
Run Code Online (Sandbox Code Playgroud)
出现这个问题是因为我想在绘图失败时创建一个不同的图像或根本没有图像.使用joran方法的代码看起来像这样:
for (i in c(1,2,Inf)) {
fname = paste(sep='', 'f', i, '.png')
png(fname, width=1024, height=768)
rs <- tryCatch(plot(i), error=function(e) NULL)
if (is.null(rs)){
print("I'll create a different picture because of the error.")
}
else{
print(paste('image', fname, 'created'))
dev.off()
next
}
}
Run Code Online (Sandbox Code Playgroud) 来自http://www.thomasstover.com/uds.html的以下unix域套接字客户端和服务器示例在我的slackware linux框中无法正常工作.我得到这个输出:
$ ./server1
$
$ ./client1
MESSAGE FROM SERVER: hello from a client
Run Code Online (Sandbox Code Playgroud)
我希望服务器从客户端和客户端打印消息hello以从服务器打印hello.
我的操作系统和编译器如下:
$ uname -a
Linux temeraire 2.6.37.6-smp #2 SMP Sat Apr 9 23:39:07 CDT 2011 i686 Intel(R) Xeon(R) CPU E3110 @ 3.00GHz Ge
nuineIntel GNU/Linux
$ gcc -v
Reading specs from /usr/lib/gcc/i486-slackware-linux/4.5.2/specs
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/i486-slackware-linux/4.5.2/lto-wrapper
Target: i486-slackware-linux
Configured with: ../gcc-4.5.2/configure --prefix=/usr --libdir=/usr/lib --mandir=/usr/man --infodir=/usr/info --enable-
shared --enable-bootstrap --enable-languages=ada,c,c++,fortran,java,objc,lto --enable-threads=posix --enable-checking=r
elease --with-system-zlib --with-python-dir=/lib/python2.6/site-packages --disable-libunwind-exceptions --enable-__cxa_
atexit --enable-libssp --enable-lto --with-gnu-ld --verbose --with-arch=i486 --target=i486-slackware-linux --build=i486
-slackware-linux …
Run Code Online (Sandbox Code Playgroud) 我在ubuntu linux 16.04上运行了这个UDP客户端程序:
package main
import (
"fmt"
"net"
"time"
"strconv"
)
func CheckError(err error) {
if err != nil {
fmt.Println("Error: " , err)
}
}
func main() {
ServerAddr,err := net.ResolveUDPAddr("udp","127.0.0.1:10001")
CheckError(err)
LocalAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:0")
CheckError(err)
Conn, err := net.DialUDP("udp", LocalAddr, ServerAddr)
CheckError(err)
defer Conn.Close()
i := 0
for {
msg := strconv.Itoa(i)
i++
buf := []byte(msg)
_,err := Conn.Write(buf)
if err != nil {
fmt.Println(msg, err)
}
time.Sleep(time.Second * 1)
}
}
Run Code Online (Sandbox Code Playgroud)
它产生这个输出:
$ go …
Run Code Online (Sandbox Code Playgroud)