声明一个var类型Stripe charge创建外部try catch

时间:2017-06-21 04:09:41

标签: c# asp.net stripe-payments

我有以下付款代码。

var service = new StripeChargeService(newgenSecretKey);
try
{
     var result = service.Create(newCharge);

    if (result.Paid)
    {
        lab.Text = "It worked";
        CartOrders.UpdateTransactionID(result.Id, OrderID, "Express Checkout");

        Response.Redirect("PgeCustSuccess.aspx?OrderID=" + OrderID);

    }
}
catch (StripeException stripeException)
{
    Debug.WriteLine(stripeException.Message);
    stripe.Text = stripeException.Message;
    //CartOrders.UpdateTransactionID(result.FailureMessage, OrderID, "Express Checkout");    
}

我想在catch块中记录注释掉的值(result.FailureMessage)。我试图捕获Stripe Errors,如果抛出并将其记录到我的数据库中。我面临的问题是我无法获得结果.FailureMessage在catch块中工作。我知道无法声明全局变量,只能在本地使用。

以下是我尝试的一些事情。

在try块之外声明了结果,但没有成功,因为var应该用类型初始化,并且类型为条带

var service = new StripeChargeService(newgenSecretKey);
var result = new { };
try
{
    //did not work
    result = service.Create(newCharge);

    if (result.Paid)
    {

任何想法?

2 个答案:

答案 0 :(得分:0)

你可以这样做:

var service = new StripeChargeService(newgenSecretKey);
Stripe result;
try
{
   result = service.Create(newCharge);
   if (result.Paid)
   {

答案 1 :(得分:0)

尝试将结果从try中移出,或者:

var service = new StripeChargeService(newgenSecretKey);
var result;

try
{
 result = service.Create(newCharge);

if (result.Paid)
{
    lab.Text = "It worked";
    CartOrders.UpdateTransactionID(result.Id, OrderID, "Express Checkout");

    Response.Redirect("PgeCustSuccess.aspx?OrderID=" + OrderID);

  }
}
catch (StripeException stripeException)
{
    Debug.WriteLine(stripeException.Message);
    stripe.Text = stripeException.Message;
    //CartOrders.UpdateTransactionID(result.FailureMessage, OrderID, "Express Checkout");    
}

请注意,如果从未填充结果,则result.FailureMessage可能会抛出异常;你可以使用if语句或try-catch来防止这种情况发生。

相关问题