Я пытаюсь перенести приложение php на .net и, просматривая код php, наткнулся на фрагмент, который немного сбивает с толку.Блок, показанный ниже
$cur_xml_valid = 'N';
$GenerateXml[] = "<J>";
$seq ++;
$GenerateXml[] = "<ANumber>" . $seq . "</ANumber>";
$GenerateXml[] = "<Customer>" . str_replace(array('&','>','<','"','\''), array('&','>','<','"','''), $invoice['customer']) . "</Customer>";
$GenerateXml[] = "<CompletionDate>" . str_replace(' ', 'T', $invoice['DateCreated']) . "</CompletionDate>";
$GenerateXml[] = "<OrderNumber>" . $invoice['SO'] . "</OrderNumber>";
$GenerateXml[] = "<OrderType>" . $invoice['type'] . "</OrderType>";
$GenerateXml[] = "<Comments>" . str_replace(array('&','>','<','"','\''), array('&','>','<','"','''), $invoice['Comments']) . "</Comments>";
$cur_xml_valid = 'Y';
if ($cur_xml_valid == 'N') {
$sqlxmlmismatch = "INSERT INTO xml_log (No,LogDesc) VALUES ( '$invoice_no','DOES NOT EXIST IN FILES (" . $invoice['Address'] . ")')";
$resultxmlmismatch = $db->query($sqlxmlmismatch);
$objWorksheet->getCell("BH$start_row")->setValue('DOES NOT EXIST IN FILES - NOT SENT');
}
Изначально $ cur_xml_valid устанавливается в «N», а после построения некоторой строки XML он устанавливается в «Y».Сразу после условия if оценивается, является ли $ cur_xml_valid 'N' или нет.
Q.Пожалуйста, подтвердите, что это просто неверный код, и $ cur_xml_valid никогда не установит значение 'Y', если произойдет ошибка.Все выполнение останавливается в php, если возникает ошибка, при условии, что нет блоков try / catch?
Q.Для нормального потока (без исключения) $ cur_xml_valid всегда будет установлен в «Y».