如何优雅地抛出异常?
public void Test()
{
if (error != 0) {
string msg = "Error";
throw new Exception(msg);
}
// Other function
...
}
我还用记录器
更改了throw new Exception(msg);
public void Test()
{
if (error != 0) {
string msg = "Error";
//throw new Exception(msg);
logger.Error(msg);
}
// Other function
...
}
出现错误时,我应该使用退出功能退出该功能吗?
揍你。
答案 0 :(得分:2)
您希望在抛出异常之前进行记录。
您还希望抛出一个继承自System.Exception的异常类型,以便使用者可以捕获特定类型。
抛出异常将退出该函数(如果你有一个,实际上将首先处理finally块)所以你只需要抛出。
此外,如果您在错误情况下捕获不同的异常,则可以记录然后只调用throw;抛出原始异常而不是垃圾堆栈。如果你想扔自己的 在这种情况下,您可以将原始异常包含为内部异常
catch (Exception e)
{
// log exception details
throw;
}
或......
catch (Exception e)
{
// log exception details
throw new MyCustomException("message", e); // inherits from Exception
}
最后一个(如果适用)的好处是消费者可以捕获MyCustomException,如果它对特殊处理有意义。
答案 1 :(得分:1)
如果你愿意的话,例外的意图是“不正常”。不要叫Exit,除非它真的是致命的,你不希望程序继续。客户端代码应捕获异常,并评估是否退出。
此外,如果您要记录错误,请在throw
之前执行此操作。
PS。不要在关键字后命名您的函数....