![](/img/trans.png)
[英]How can I create my own exception if an object parameter is null in C#
[英]How can I create my own exception?
这是我拥有的代码的骨架:
if(CheckForSomething())
{
try
{
//do something
}
catch (UnauthorizedAccessException ex)
{
LogException(ex, item.server);
}
catch (Exception ex)
{
LogException(ex, item.server);
}
}
else
{
string error = "Some error";
//want to call LogException with error as argument
}
private static void LogException(Exception ex)
{
//write ex to one log file
// write ex.message to another log file
}
如何从else块调用LogException方法? 我尝试将字符串强制转换为异常并创建异常。
一个更好的问题是,imo不是,但是为什么要这么做? 为什么不定义两个LogError
重载,一个重载Exception
,另一个重载string
。
private static void LogError(Exception ex)
{
// write ex to one log file
// write ex.message to another log file
}
private static void LogError(string error)
{
//nothing to write to exception-specific log file
// write error info to another log file
}
仅仅为这样的日志记录而生成自己的Exception
实例并不是真正明智的选择。
LogException(new Exception("some error"));
您是否考虑过将// write ex.message to another log file
行为的// write ex.message to another log file
单独的函数中,并使用所需的字符串进行调用?
if(CheckForSomething())
{
try
{
// do something
}
catch (UnauthorizedAccessException ex)
{
LogException(ex);
}
catch (Exception ex) // Never do this. Do you know how to handle an OutOfMemoryException?
{
LogException(ex);
}
}
else
{
string error = "Some error";
LogMessage(error);
}
private static void LogException(Exception ex)
{
// write ex to one log file
LogMessage(ex.Message);
}
private static void LogMessage(string message)
{
// write message to another log file
}
您还可以使自己的异常类如下:
public class LogException: Exception
{
public LogException() : base()
{
}
public LogException(string message) : base(message)
{
}
}
Exception e = new Exception(error);
LogException ee = new LogException (Exception e);
throw ee;
把它放在else块中
您可以做类似前面提到的事情
LogException(new Exception("some error"));
但是创建自己的异常类可能会更好:
class MyException : Exception
{
//...
}
然后
LogException(new MyException());
到目前为止,一些好的解决方案。 您是否不想仅为记录其他人创建一个自定义的例外而拥有一个WTF? 时刻阅读您的代码。
另一种方法是只从异常日志中提取消息。
if(CheckForSomething())
{
try
{
// do something
}
catch (UnauthorizedAccessException ex)
{
LogMessage(ex.Message);
}
}
else
{
LogMessage("Some Error!");
}
private static void LogMessage(string message)
{
//write message to log
}
创建异常的唯一目的是将异常传递为方法处理的格式。 它打破了程序员之间关于什么是异常及其用途的隐含理解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.