Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 使用C在类和代码隐藏中处理异常#_Asp.net_Postgresql_Function_C# 3.0 - Fatal编程技术网

Asp.net 使用C在类和代码隐藏中处理异常#

Asp.net 使用C在类和代码隐藏中处理异常#,asp.net,postgresql,function,c#-3.0,Asp.net,Postgresql,Function,C# 3.0,我有点被我正在做的asp.net项目卡住了!我有一个从代码后面调用的类,它的许多函数没有返回类型,即void。那么如何处理异常呢???此外,如果类中的函数确实具有返回类型(例如,数据集),那么如何返回异常或指示发生了异常?我从我的类中附加了以下代码,这些代码是从代码隐藏中引用的 public void fnRecord(string []varList, string fnName) { try { String x;

我有点被我正在做的asp.net项目卡住了!我有一个从代码后面调用的类,它的许多函数没有返回类型,即void。那么如何处理异常呢???此外,如果类中的函数确实具有返回类型(例如,数据集),那么如何返回异常或指示发生了异常?我从我的类中附加了以下代码,这些代码是从代码隐藏中引用的

public void fnRecord(string []varList, string fnName)
    {
        try
        {
            String x;

            StringBuilder SQLParameters = new StringBuilder();

            SQLParameters.AppendLine("SELECT #{Function}(");
            {
                SQLParameters.Replace("#{Function}", fnName);
            }

            for (int i = 0; i < varList.Length; i++)
            {                   
                x = varList[i].ToString();
                SQLParameters.Append("'" + x + "',");
            }

            SQLParameters.Remove((SQLParameters.Length - 1), 1);
            SQLParameters.Append(")");

            string SQLCMD = SQLParameters.ToString();

            conn.Open();
            NpgsqlCommand command = new NpgsqlCommand(SQLCMD, conn);
            Object result = command.ExecuteScalar();
        }

        catch (NpgsqlException ne)
        {
            //return ne;
        }

        catch (Exception x)
        {
            //error code
        }

        finally
        {
            conn.Close();
        }
    }
public void fnRecord(string[]varList,string fnName)
{
尝试
{
字符串x;
StringBuilder SQLParameters=新的StringBuilder();
AppendLine(“选择#{Function}(”);
{
替换(“#{Function}”,fnName);
}
for(int i=0;i
任何帮助都将不胜感激


谢谢

只捕获您希望正确处理的异常。如果要在UI中反映错误,请在UI中捕获它们。如果您想处理它们并尝试在业务逻辑中处理问题,那么就抓住它们并在此时处理它们


顺便说一下,您的代码很容易受到攻击。最好去了解一下。

只捕捉那些你想要正确处理的异常。如果要在UI中反映错误,请在UI中捕获它们。如果您想处理它们并尝试在业务逻辑中处理问题,那么就抓住它们并在此时处理它们


顺便说一下,您的代码很容易受到攻击。最好去了解一下。

您不会返回异常。你扔它们。这就是异常的意义所在-您不希望异常处理使您的方法签名混乱

在catch子句中,您实际上没有做任何事情来处理异常。然后,您根本不应该捕获它们,只是让它们冒泡到您的代码后面,然后在那里捕获它们——在方法调用周围放置一个try-catch

或者,在方法中捕获SQL异常,然后抛出一个新异常和一些合理的消息,将SqlExceptions添加为内部异常,如下所示

catch (NpgsqlException ne)
{
    throw new Exception("Your explanatory message here", ne);
}
finally
{
    ...
}

您不返回异常。你扔它们。这就是异常的意义所在-您不希望异常处理使您的方法签名混乱

在catch子句中,您实际上没有做任何事情来处理异常。然后,您根本不应该捕获它们,只是让它们冒泡到您的代码后面,然后在那里捕获它们——在方法调用周围放置一个try-catch

或者,在方法中捕获SQL异常,然后抛出一个新异常和一些合理的消息,将SqlExceptions添加为内部异常,如下所示

catch (NpgsqlException ne)
{
    throw new Exception("Your explanatory message here", ne);
}
finally
{
    ...
}

很酷,谢谢你的回答。。。使用obout库时,您也必须尝试并解决它们的异常处理功能

很酷谢谢你的回答。。。使用obout库时,您也必须尝试并解决它们的异常处理功能