C# 如何在c中检查函数是否引发异常?
如何在c中检查函数是否引发异常C# 如何在c中检查函数是否引发异常?,c#,C#,如何在c中检查函数是否引发异常 public List<string> GetFileNames() { try { // do something // return something } catch(Exception ex) { // do something // log something } } 您在这里有很多选择: 这通常是通过尝试来完成的。。。像锥虫一样
public List<string> GetFileNames()
{
try
{
// do something
// return something
}
catch(Exception ex)
{
// do something
// log something
}
}
您在这里有很多选择: 这通常是通过尝试来完成的。。。像锥虫一样的图案 也可以返回null
您在这里有很多选择: 这通常是通过尝试来完成的。。。像锥虫一样的图案 也可以返回null
我想你可以简化一下:
public void ICallGetFileNames()
{
var list = new List<YourObject>();
try
{
list = GetFileNames();
DoThisOtherMethod();
}
catch (Exception ex)
{
DoThisMethod();
}
}
这样,如果异常是由GetFileNames方法引发的,则不会调用DoThisOtherMethod,因为代码将直接进入异常块。否则,如果没有引发异常,您的代码将在GetFileNames方法之后调用dothisother方法。我认为您可以简化它:
public void ICallGetFileNames()
{
var list = new List<YourObject>();
try
{
list = GetFileNames();
DoThisOtherMethod();
}
catch (Exception ex)
{
DoThisMethod();
}
}
这样,如果异常是由GetFileNames方法引发的,则不会调用DoThisOtherMethod,因为代码将直接进入异常块。否则,如果没有引发异常,代码将在GetFileNames方法之后调用DothisOther方法。基本问题是,当您无法处理异常时,您正在尝试处理该异常 如果GetFilenames无法从异常中恢复,它应该自己抛出一个异常。这可能是完全忽略了一个try/catch,或者抓住它,包装并重新抛出
public List<string> GetFilenames() {
try {
...
} catch (Exception e) {
throw new FileLoadException("Failed to get filenames", e);
// Or if you don't want to create custom exceptions, perhaps use an InvalidOperationException
}
}
基本问题是,当您无法处理异常时,您正在尝试处理异常 如果GetFilenames无法从异常中恢复,它应该自己抛出一个异常。这可能是完全忽略了一个try/catch,或者抓住它,包装并重新抛出
public List<string> GetFilenames() {
try {
...
} catch (Exception e) {
throw new FileLoadException("Failed to get filenames", e);
// Or if you don't want to create custom exceptions, perhaps use an InvalidOperationException
}
}
你不能用c来做这件事 与您描述的最接近的是用java实现的检查异常。在这种情况下,函数将声明它正在抛出一些异常,如下所示:
public void foo() throws IOException {
// your code
}
在编译时,您可以通过将其封装在TryCatch块中或在函数中以相同的方式传播来处理此问题
在c中,将函数括在TryCatch块中,并在出现错误时使用不同的函数。在c中不能这样做 与您描述的最接近的是用java实现的检查异常。在这种情况下,函数将声明它正在抛出一些异常,如下所示:
public void foo() throws IOException {
// your code
}
在编译时,您可以通过将其封装在TryCatch块中或在函数中以相同的方式传播来处理此问题
在c中,将函数括在TryCatch块中,并在出现错误时使用不同的函数。选项1:不要捕获方法中的异常,让它冒泡出来,并在您真正想要做出决定的块中捕获它。选项2:让您的方法返回一个指示成功/失败的布尔值。如果需要返回值,请考虑参数。还有很多其他的方法,选项1:不要在方法中捕捉异常,让它冒泡出来,并在您真正想要做出决定的块中捕捉它。选项2:让您的方法返回一个指示成功/失败的布尔值。如果需要返回值,请考虑参数。还有很多其他的方法,