C# 为什么这段代码并不总是返回一个值?
关于这个问题,我发现并采用了一种方法将UPC-E条形码转换为UPC-a:C# 为什么这段代码并不总是返回一个值?,c#,barcode,C#,Barcode,关于这个问题,我发现并采用了一种方法将UPC-E条形码转换为UPC-a: public static string ConvertUPCEToUPCA(string UPCE) { try { int UPCLen; string UPCA = ""; int chkInt; UPCLen = UPCE.Length; FormatString formatString = new FormatS
public static string ConvertUPCEToUPCA(string UPCE)
{
try
{
int UPCLen;
string UPCA = "";
int chkInt;
UPCLen = UPCE.Length;
FormatString formatString = new FormatString();
if (formatString.containsAlpha(UPCE) != -1)
{
UPCLen = 11;
}
if (UPCLen == 7) // Didn't enter a check digit
{
UPCE = UPCE.Substring(1,6);
}
else if (UPCLen == 8) // Entered both check digit and leading 0 digit
{
UPCE = UPCE.Substring(2,6);
}
if (UPCLen < 9)
{
chkInt = Convert.ToInt32(UPCE.Substring(5,1));
switch (chkInt)
{
case 0:
case 1:
case 2:
UPCA = UPCE.Substring(0,2) + UPCE.Substring(5,1) + "0000" + UPCE.Substring(2,3);
break;
case 3:
UPCA = UPCE.Substring(0,3) + "00000" + UPCE.Substring(3,2);
break;
case 4:
UPCA = UPCE.Substring(0,4) + "00000" + UPCE.Substring(4,1);
break;
case 5:
case 6:
case 7:
case 8:
case 9:
UPCA = UPCE.Substring(0,5) + "0000" + UPCE.Substring(5,1);
break;
default:
break;
}
UPCA = "0" + UPCA;
}
return UPCA;
}
catch(Exception ex)
{
Duckbill.ExceptionHandler(ex, "PlatypusUtils.ConvertUPCEToUPCA(UPCE)");
}
}
公共静态字符串转换器UPCETOUPCA(字符串UPCE)
{
尝试
{
int UPCLen;
字符串UPCA=“”;
int chkInt;
UPCLen=UPCE.长度;
FormatString FormatString=新的FormatString();
if(formatString.containsAlpha(UPCE)!=-1)
{
UPCLen=11;
}
if(UPCLen==7)//未输入校验位
{
UPCE=UPCE子串(1,6);
}
else if(UPCLen==8)//输入校验位和前导0位
{
UPCE=UPCE.子串(2,6);
}
if(UPCLen<9)
{
chkInt=Convert.ToInt32(UPCE.Substring(5,1));
开关(chkInt)
{
案例0:
案例1:
案例2:
UPCA=UPCE子串(0,2)+UPCE子串(5,1)+“0000”+UPCE子串(2,3);
打破
案例3:
UPCA=UPCE子串(0,3)+“00000”+UPCE子串(3,2);
打破
案例4:
UPCA=UPCE子串(0,4)+“00000”+UPCE子串(4,1);
打破
案例5:
案例6:
案例7:
案例8:
案例9:
UPCA=UPCE子串(0,5)+“0000”+UPCE子串(5,1);
打破
违约:
打破
}
UPCA=“0”+UPCA;
}
返回UPCA;
}
捕获(例外情况除外)
{
鸭嘴兽。特例处理者(例如,“鸭嘴兽。ConvertUPCEToUPCA(UPCE)”);
}
}
…但我得到的是,“不是所有的代码路径都返回值。”为什么?“return UPCA;”行不是无论如何都已到达吗?即使代码引发异常,也应始终返回一个值,因为您使用的方法返回字符串,而不是void方法(不返回任何内容)
您应该在Catch括号之间返回一个字符串。您应该始终返回一个值,即使代码引发异常,因为您使用的方法返回字符串,而不是void方法(不返回任何内容)
您应该在Catch括号之间返回一个字符串。如果发生异常,您不会返回任何内容。想想看:你发现了一个
异常
,你已经处理好了。现在怎么办?调用方希望从您的方法中得到一些回报,而您的方法没有给出任何回报
你应该:
- 在
块中返回一个字符串李>catch
- 在
块中抛出一个catch
——要么是您捕获的异常,要么是新异常李>异常
- 创建一个存储要返回的值的变量。在
块之前,为其指定一个try
、空字符串或任何其他“默认”值。作为null
块中的最后一件事,将结果值分配给该变量。在try
块中返回它。因此,如果发生错误,您至少可以返回一些内容。否则返回操作的结果finally
否。如果某个地方发生错误,
try
块将停止在有问题的行。执行直接进入第一个catch
块,该块可以处理抛出的异常(在您的情况下,只有一个异常)。如果发生异常,您不会返回任何内容。想想看:你发现了一个异常
,你已经处理好了。现在怎么办?调用方希望从您的方法中得到一些回报,而您的方法没有给出任何回报
你应该:
- 在
块中返回一个字符串李>catch
- 在
块中抛出一个catch
——要么是您捕获的异常,要么是新异常李>异常
- 创建一个存储要返回的值的变量。在
块之前,为其指定一个try
、空字符串或任何其他“默认”值。作为null
块中的最后一件事,将结果值分配给该变量。在try
块中返回它。因此,如果发生错误,您至少可以返回一些内容。否则返回操作的结果finally
否。如果某个地方发生错误,
try
块将停止在有问题的行。执行直接进入第一个catch
块,该块可以处理抛出的异常(无论如何,在您的案例中只有一个异常)。如果捕获到异常,发生的情况取决于异常的速度和温度,以及捕获器的韧性和准备情况。我赌麦田里的那个家伙。如果一个异常被抓住了,会发生什么取决于异常的速度和温度,以及接球手的坚韧和准备。我赌黑麦里的那个人。