ASP.NET常见异常处理示例
- 将指定的年月日转初始化为DateTime新的实例(Nop.Admin.Controllers.OrderController.ParseProductAttributes)
case AttributeControlType.Datepicker: { var day = form[controlId + "_day"]; var month = form[controlId + "_month"]; var year = form[controlId + "_year"]; DateTime? selectedDate = null; try { selectedDate = new DateTime(Int32.Parse(year), Int32.Parse(month), Int32.Parse(day)); } catch { } if (selectedDate.HasValue) { attributesXml = _productAttributeParser.AddProductAttribute(attributesXml, attribute, selectedDate.Value.ToString("D")); } } break;
- 能否出订单信息(srcPresentationNop.WebAdministrationControllersOrderController.cs(1346))
try { byte[] bytes = _exportManager.ExportOrdersToXlsx(orders); return File(bytes, MimeTypes.TextXlsx, "orders.xlsx"); } catch (Exception exc) { ErrorNotification(exc); return RedirectToAction("List"); }
- 发送HTTP请求(srcPluginsNop.Plugin.ExchangeRate.EcbExchangeEcbExchangeRateProvider.cs(60))
//get exchange rates to euro from European Central Bank var request = (HttpWebRequest)WebRequest.Create("http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml"); try { using (var response = request.GetResponse()) { //load XML document var document = new XmlDocument(); document.Load(response.GetResponseStream()); //add namespaces var namespaces = new XmlNamespaceManager(document.NameTable); namespaces.AddNamespace("ns", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref"); namespaces.AddNamespace("gesmes", "http://www.gesmes.org/xml/2002-08-01"); //get daily rates var dailyRates = document.SelectSingleNode("gesmes:Envelope/ns:Cube/ns:Cube", namespaces); DateTime updateDate; if (!DateTime.TryParseExact(dailyRates.Attributes["time"].Value, "yyyy-MM-dd", null, DateTimeStyles.None, out updateDate)) updateDate = DateTime.UtcNow; foreach (XmlNode currency in dailyRates.ChildNodes) { //get rate decimal currencyRate; if (!decimal.TryParse(currency.Attributes["rate"].Value, out currencyRate)) continue; ratesToEuro.Add(new Core.Domain.Directory.ExchangeRate() { CurrencyCode = currency.Attributes["currency"].Value, Rate = currencyRate, UpdatedOn = updateDate }); } } } catch (WebException ex) { _logger.Error("ECB exchange rate provider", ex); }
- EF操作(srcLibrariesNop.DataEfRepository.cs(182))
try { if (entities == null) throw new ArgumentNullException("entities"); foreach (var entity in entities) this.Entities.Remove(entity); this._context.SaveChanges(); } catch (DbEntityValidationException dbEx) { throw new Exception(GetFullErrorText(dbEx), dbEx); }
- srcLibrariesNop.CoreWebHelper.cs(46)
protected virtual Boolean IsRequestAvailable(HttpContextBase httpContext) { if (httpContext == null) return false; try { if (httpContext.Request == null) return false; } catch (HttpException) { return false; } return true; }
- srcLibrariesNop.CorePluginsPluginManager.cs(434)
try { File.Copy(plug.FullName, shadowCopiedPlug.FullName, true); } catch (IOException) { Debug.WriteLine(shadowCopiedPlug.FullName + " is locked, attempting to rename"); //this occurs when the files are locked, //for some reason devenv locks plugin files some times and for another crazy reason you are allowed to rename them //which releases the lock, so that it what we are doing here, once it's renamed, we can re-shadow copy try { var oldFile = shadowCopiedPlug.FullName + Guid.NewGuid().ToString("N") + ".old"; File.Move(shadowCopiedPlug.FullName, oldFile); } catch (IOException exc) { throw new IOException(shadowCopiedPlug.FullName + " rename failed, cannot initialize plugin", exc); } //ok, we've made it this far, now retry the shadow copy File.Copy(plug.FullName, shadowCopiedPlug.FullName, true); }