被fclose忽悠了,try...catch...end及lasterr

49 篇文章 0 订阅
17 篇文章 2 订阅

今天主要把原来的程序整理了一遍,思路清晰多了,程序看起来也美观了。

另外一个主要工作,是让程序能够自己一次跑完几千的数据,不会像上次那样,经常跑到几百条,这样那样的原因奔溃了。总结来看,主要有两个原因导致程序的奔溃:

1、有些光谱数据,红移太大,退红移后的数据可能还未达到所需要的窗口数据,无法截取数据出来拟合,即所谓的:Index exceeds matrix dimensions.  

2、第二个原因让我有点奔溃,每次程序批量运行开始没问题,但是运行到两三百条数据的时候,就会程序奔溃,提示是:文件无法读取,matlab openFile at 695。明明文件有,并且提示出错的单个文件直接运行是完全可以的,怎么回事?而且需要关掉MATLAB才能够重新运行程序,很是惊讶。上网查matlab openFile at 695也未果。后来才发现,原来原因非常简单,在调试的时候,我看了fopen,我立刻想到,要运行几百条后才出现问题,是不是打开的文件描述符太多有问题,如果是这个问题的话,很可能我忘记fclose了,果然,问题迎刃而解!

呵呵,没想到今天还被fclose给玩了一把,不过让我想起了读研时候上的UNIX课程,对于文件描述符,文件i节点还是印象比较深刻的。不过让我更加体会到,写程序,别看一个小细节你当时没发现,并且也不是致命的错误,但是,或许在某个时候,他会爆发的,你一定要注意,并且注意一个程序员的习惯,又让我想起喜剧之王里面的一个演员的自我修养,哈哈,扯远了。

此外,程序没有再奔溃的另一个主要工作是使用了try...catch...end,以及print lasterr错误输出处理,这样批量跑程序,可以把出错的小部分挑拣出来,慢慢看为什么出错,特殊在哪里,而正常的大部分数据,以后就不用跑了。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值