我收到这个PHP错误:
PHP Notice: Undefined offset: 1
Run Code Online (Sandbox Code Playgroud)
这是抛出它的PHP代码:
$file_handle = fopen($path."/Summary/data.txt","r"); //open text file
$data = array(); // create new array map
while (!feof($file_handle) ) {
$line_of_text = fgets($file_handle); // read in each line
$parts = array_map('trim', explode(':', $line_of_text, 2));
// separates line_of_text by ':' trim strings for extra space
$data[$parts[0]] = $parts[1];
// map the resulting parts into array
//$results('NAME_BEFORE_:') = VALUE_AFTER_:
}
Run Code Online (Sandbox Code Playgroud)
这个错误是什么意思?是什么导致这个错误?
我最近继承了一些作为Windows服务运行的应用程序,并且我在提供gui(可以从系统托盘中的上下文菜单访问)时遇到问题.
我们需要为Windows服务使用gui的原因是为了能够重新配置Windows服务的行为而无需停止/重新启动.
我的代码在调试模式下工作正常,我得到了上下文菜单,一切都行为正常等.
当我使用命名帐户(即非本地系统帐户)通过"installutil"安装服务时,服务运行正常,但不会在系统托盘中显示图标(我知道这是正常行为,因为我没有有"与桌面交互"选项).
这是问题所在 - 当我选择"LocalSystemAccount"选项,并检查"与桌面交互"选项时,该服务需要AGES启动,没有明显的原因,我只是不断得到
无法在本地计算机上启动...服务.
错误1053:服务未及时响应启动或控制请求.
顺便提一下,我通过注册表黑客将Windows服务超时从默认的30秒增加到2分钟(请参阅http://support.microsoft.com/kb/824344,在第3节中搜索TimeoutPeriod),但服务启动仍然超时
我的第一个问题是 - 为什么"本地系统帐户"登录比服务使用非LocalSystemAccount登录时要长得多,导致Windows服务超时?这两者之间的区别在于启动时会产生这种不同的行为吗?
其次 - 退一步,我想要实现的只是一个提供配置gui的Windows服务 - 我很乐意使用非本地系统帐户(带有命名用户/ pwd)运行,如果我可以让服务与桌面交互(也就是说,从系统托盘中提供上下文菜单).这是可能的,如果是这样的话怎么样?
任何指向上述问题的提示都将不胜感激!
我来了一些VBScript示例,我On Error Resume Next在脚本的开头基本上看到了该语句.
它有什么作用?
我最近在教自己Python并在代码执行之前发现了关于错误检查的LBYL/EAFP习语.在Python中,似乎接受的样式是EAFP,它似乎与该语言一起使用.
LBYL(大号 OOK 乙安伏ý OU 大号 EAP):
def safe_divide_1(x, y):
if y == 0:
print "Divide-by-0 attempt detected"
return None
else:
return x/y
Run Code Online (Sandbox Code Playgroud)
EAFP(它的ê asier到一个 SK ˚F orgiveness比P ermission):
def safe_divide_2(x, y):
try:
return x/y
except ZeroDivisionError:
print "Divide-by-0 attempt detected"
return None
Run Code Online (Sandbox Code Playgroud)
我的问题是:我从来没有听说过使用EAFP作为主要数据验证结构,来自Java和C++背景.EAFP在Java中使用是否明智?或者是否存在过多的异常开销?我知道实际抛出异常时只有开销,所以我不确定为什么不使用更简单的EAFP方法.这只是偏好吗?
我似乎无法从PDO收到任何错误消息:
#$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
try {
$sth = $dbh->prepare('@$%T$!!!');
print_r($sth);
print_r($dbh->errorInfo());
} catch (PDOException $e) {
echo $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)
它只给出:
PDOStatement Object
(
[queryString] => @$%T$!!!
)
Array
(
[0] => 00000
[1] =>
[2] =>
)
Run Code Online (Sandbox Code Playgroud)
setAttribute没有任何帮助.
这是PHP 5.3.3
支持MySQL的Apache 2.0 Handler PDO驱动程序
客户端API版本mysqlnd 5.0.7-dev - 091210 - $ Revision:300533 $
我该怎么做才能获得错误信息?
在尝试require()不存在的模块时,我的代码中有一点障碍.代码循环遍历目录并var appname = require('path')在每个文件夹上执行操作.这适用于适当配置的模块,但抛出:Error: Cannot find module当循环命中非模块时.
我希望能够优雅地处理这个错误,而不是让它停止我的整个过程.简而言之,如何捕获错误require()?
谢谢!
注意:我不是在扮演魔鬼的拥护者或类似的东西 - 我只是真的好奇,因为我自己不在这个营地.
标准库中的大多数类型都具有可以抛出异常的变异函数(例如,如果内存分配失败)或者可以抛出异常的非变异函数(例如,超出边界的索引访问器).除此之外,许多自由函数可以抛出异常(例如operator new和dynamic_cast<T&>).
你如何在"我们不使用例外"的背景下实际处理这个问题?
你是否试图永远不会调用可以投掷的功能?(我无法看到它的规模如何,所以如果是这种情况,我很想知道你是如何实现这一目标的)
你没事吧和标准库中投掷,你把"我们不使用异常"为"我们从来不扔的异常我们的代码,我们从来没有赶上从异常等的代码"?
您是否通过编译器开关完全禁用异常处理?如果是这样,标准库的异常抛出部分如何工作?
编辑您的构造函数,它们是否会失败,或者按照惯例使用具有专用init函数的两步构造,该函数可以在失败时返回错误代码(构造函数不能),或者您是否执行其他操作?
编辑在问题开始后1周进行了一些小的澄清......下面的评论和问题中的大部分内容都集中在为什么方面的例外与"别的东西".我的兴趣是不是在这,但是当你选择做"别的东西",如何你处理标准库部件是不抛出异常?
我在Python中有一段代码似乎在概率上导致错误,因为它正在访问服务器,有时该服务器有500内部服务器错误.我想继续尝试,直到我没有得到错误.我的解决方案是:
while True:
try:
#code with possible error
except:
continue
else:
#the rest of the code
break
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎是个黑客.是否有更多的Pythonic方法来做到这一点?
我已经阅读了一些关于tryCatch和cuzzins的其他SO问题,以及文档:
但我还是不明白.
我正在运行一个循环,next如果发生任何一种错误,我想跳过:
for (i in 1:39487) {
# EXCEPTION HANDLING
this.could.go.wrong <- tryCatch(
attemptsomething(),
error=function(e) next
)
so.could.this <- tryCatch(
doesthisfail(),
error=function(e) next
)
catch.all.errors <- function() { this.could.go.wrong; so.could.this; }
catch.all.errors;
#REAL WORK
useful(i); fun(i); good(i);
} #end for
Run Code Online (Sandbox Code Playgroud)
(顺便说一句,没有next我能找到的文件)
当我跑步时,R鸣喇叭:
Error in value[[3L]](cond) : no loop for break/next, jumping to top level
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么基本点?这tryCatch显然是在for循环中,所以为什么不R知道呢?
在Swift 2.0中NSError符合ErrorType协议.
对于自定义错误,我们可以为某些情况指定关联对象,如下所示.
enum LifeError: ErrorType {
case BeBorn
case LostJob(job: String)
case GetCaughtByWife(wife: String)
...
}
Run Code Online (Sandbox Code Playgroud)
我们可以轻松地做到以下几点:
do {
try haveAffairWith(otherPerson)
} catch LifeError.GetCaughtByWife(let wife) {
...
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我们希望它作为一个传递到其他地方NSError,它就会丢失它的关联对象信息.
println("\(LifeError.GetCaughtByWife("Name") as NSError)")
Run Code Online (Sandbox Code Playgroud)
打印:
Error Domain=... Code=1 "The operation couldn't be completed". (... error 1)
Run Code Online (Sandbox Code Playgroud)
它userInfo是nil.
我wife和哪里有联系ErrorType?
error-handling ×10
php ×2
python ×2
c++ ×1
fatal-error ×1
idioms ×1
java ×1
javascript ×1
node.js ×1
pdo ×1
r ×1
swift ×1
swift2 ×1
syntax-error ×1
timeout ×1
try-catch ×1
undefined ×1
vbscript ×1
windows ×1