Mic*_*ern 1 c# exception-handling exception try-catch
我有以下try-catch语句,如果message属性在文本中包含"我的错误",我不想抛出异常.
我怎样才能在程序上实现这一目标?此外,这会被视为代码味吗?
try
{
}
catch(Exception e)
{
if(e.Messages.Contains("My error"))
{
//want to display a friendly message and suppress the exception
}
else
{
throw e;
}
}
Run Code Online (Sandbox Code Playgroud)
Cla*_*diu 14
您不应该根据错误测试捕获错误.您应该创建自己的异常类来扩展异常:
class MyErrorException : Exception { }
Run Code Online (Sandbox Code Playgroud)
扔掉并抓住那些.(请原谅我的语法,如果它错了,我有一段时间没有做过C#).
话虽如此,抛出和捕获自己的异常而不是传播它们是完全正常的,这就是你实际上应该如何进行异常处理.
Jim*_*ner 11
你应该抓住你正在寻找的特定例外.坦率地说,这段代码令人震惊.你应该有......
public class MyCoolException : Exception {
public MyCoolException(string msg) : base(msg) {}
}
public void MyCoolMethod() {
// if bad things happen
throw new MyCoolException("You did something wrong!");
}
Run Code Online (Sandbox Code Playgroud)
然后在你的代码中你可以像...一样使用它
try {
MyCoolMethod();
} catch (MyCoolException e) {
// do some stuff
}
Run Code Online (Sandbox Code Playgroud)
您的代码会产生可维护性问题,因为简单的文本更改可能会产生奇怪的副作用 您可以拥有自己的异常类,该类继承自System.Exception.然后,如果您可以执行以下操作,而不是
try
{
}
catch(MyException myException) //or just catch(MyException)
{
//display a friendly message
}
Run Code Online (Sandbox Code Playgroud)
你也不想这样做,throw e因为它不会保留Stack,只是throw;会这样做.
| 归档时间: |
|
| 查看次数: |
4560 次 |
| 最近记录: |